Skip to content

← Tornar a la llista

Tres repos, una promesa

Tres modes al producte; tres repos al codi. No és coincidència. És el mateix instint aplicat dues vegades: separar les coses que mouen a velocitats diferents.

2 min de lectura

Tres modes al producte; tres repos al codi. No és coincidència. És el mateix instint aplicat dues vegades: separar les coses que mouen a velocitats diferents.

El context

La temptació del monorepo és real. Un sol clone, un sol issue tracker, un sol CI. Hi ha empreses que ho fan bé. Per a un solo dev, el monorepo també té un avantatge: atomic refactor. Pots canviar una API i la seva consumició en el mateix PR.

Però acobla rellisades. Si el backend i el frontend viuen al mateix repo, els seus releases també. Quan vull desplegar una micro-millora del frontend, em llegeixo també una migració de base de dades a la mateixa branca. I quan tinc pressa, em salto un dels dos.

La decisió

Tres repositoris separats, una promesa compartida:

  • camperroute-api. Backend FastAPI + Postgres + Celery. Cicle propi. Despleguem amb un PR + merge a staging i un altre a main. Cap altre repo el para.
  • camperroute-app. Frontend React + Vite + PWA. També cicle propi. El mateix patró trunk-staging. Consumeix l’API per contracte OpenAPI, no per imports directes.
  • camperroute-meta. Privat. Conté la documentació BMAD: briefs, epics, stories, arquitectures, retros. No despleguem res — és el quadern de bitàcola. Privat perquè no és per a consumidors, no perquè sigui secret.
Diagrama de la família de repositoris CamperRoute: api (backend), app (frontend) i meta (privat); comparteixen un contracte OpenAPI.

Per què meta és privat. No conté secrets ni dades sensibles. Conté el com es prenen les decisions: dubtes per resoldre, errors comesos, retros honestos. Si ho posés al públic, hauria d’autocensurar — i un document de desenvolupament autocensurat val zero. Mantenir-lo privat em permet escriure’l com el pensaria.

Què no és

Per ser explícit:

  • No és una arquitectura de microserveis. Hi ha un backend i un frontend. La separació és per repo, no per servei en runtime.
  • No són tres equips. Sóc un. La separació no reflecteix una estructura organitzativa; reflecteix cicles de vida diferents.
  • No és un manifest contra els monorepos. Per a equips de més de 2-3 persones amb refactors creuats freqüents, un monorepo bo (Nx, Turborepo, Bazel) probablement paga la pena. Aquí, no.

El que ve

Al pròxim — i últim — post de la sèrie: com observo què passa al producte sense veure l’usuari. Sentry, sí, però amb les regles de scrubbing dels paranois. La diferència entre saber que alguna cosa s’ha trencat i saber qui la tenia oberta.