GitHub — codi i CI/CD
Tot el codi de l’estudi viu a l’organització
github.com/ediacarastudio. Cada servei es
desplega des del seu repositori — via Coolify (serveis amb
procés) o via Cloudflare Pages (llocs estàtics). Tots els
repos són privats.
Inventari de repositoris
Section titled “Inventari de repositoris”| Repo | Rol | Stack |
|---|---|---|
ediacarastudio-web-app | Web principal | Next.js · TS · pnpm |
ediacarastudio-api | API REST (formulari de contacte, Resend) | Express · TS · pnpm |
ediacarastudio-assets | Font de veritat dels assets estàtics → R2/CDN | TS · pnpm |
ediacarastudio-geodata | Dades del mapa (pmtiles, glyphs, contorns) → R2 | TS · pnpm |
ediacarastudio-coming-soon | Pàgina “coming soon” temporal | HTML estàtic |
ediacarastudio-docs | Aquest lloc de documentació | Astro · Starlight |
ediacarastudio-agreements | Convencions compartides (vegeu sota) | — |
Convencions compartides — agreements
Section titled “Convencions compartides — agreements”ediacarastudio-agreements recull les convencions transversals de l’organització
(naming, secrets, branques, commits, PRs; regles específiques de TypeScript i de
repos deployable). S’inclou com a submòdul de Git a .agreements/ dins de
cada repositori, de manera que totes les normes viuen en un sol lloc i es
referencien arreu.
# Clonar un repo que ja el portagit clone --recurse-submodules git@github.com:ediacarastudio/<repo>Flux de desplegament
Section titled “Flux de desplegament”| Tipus | Origen | Destí | Com |
|---|---|---|---|
| Serveis amb procés | web-app, api, … | nabu | Coolify via webhook de GitHub |
| Llocs estàtics | docs | Cloudflare Pages | Build a l’edge, no toca nabu |
| Assets | assets, geodata | R2 / CDN | Vegeu sota |
CI/CD d’assets → R2
Section titled “CI/CD d’assets → R2”El repo assets té un pipeline de GitHub Actions (.github/workflows/assets.yml)
que és l’única via per la qual els assets arriben al CDN:
- PR a
main→ només validació (format de nom, mida, formats permesos, SVG). - Push a
main→ validació + optimització (sharp→WebP, svgo) +rclone syncdedist/cap a R2.
Detalls que cal recordar:
- El build corre sobre Node 22 / pnpm 11 (pnpm 11 falla amb Node 20). Mateix requisit que Coolify.
mainestà protegida: PR obligatori i el joboptimize-and-syncha de passar.- Els assets mai s’esborren ni es modifiquen — versió nova = fitxer nou amb
sufix de data (
logo-2026.svg). La URL del CDN ha de seguir vàlida per sempre.
El repo geodata no té CI: els binaris del mapa es generen i es pugen a mà
(vegeu Dades del mapa). Els dos productors comparteixen el
mateix bucket — per això un fa servir rclone sync i l’altre rclone copy
(explicat a Cloudflare → R2).
Els noms dels secrets (R2_*) i on viuen es documenten a
Inventari de secrets.