Skip to content

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.

RepoRolStack
ediacarastudio-web-appWeb principalNext.js · TS · pnpm
ediacarastudio-apiAPI REST (formulari de contacte, Resend)Express · TS · pnpm
ediacarastudio-assetsFont de veritat dels assets estàtics → R2/CDNTS · pnpm
ediacarastudio-geodataDades del mapa (pmtiles, glyphs, contorns) → R2TS · pnpm
ediacarastudio-coming-soonPàgina “coming soon” temporalHTML estàtic
ediacarastudio-docsAquest lloc de documentacióAstro · Starlight
ediacarastudio-agreementsConvencions compartides (vegeu sota)

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.

Terminal window
# Clonar un repo que ja el porta
git clone --recurse-submodules git@github.com:ediacarastudio/<repo>
TipusOrigenDestíCom
Serveis amb procésweb-app, api, …nabuCoolify via webhook de GitHub
Llocs estàticsdocsCloudflare PagesBuild a l’edge, no toca nabu
Assetsassets, geodataR2 / CDNVegeu sota

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 sync de dist/ 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.
  • main està protegida: PR obligatori i el job optimize-and-sync ha 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.