0001 — Monorepo com pnpm + Turborepo¶
- Status: aceito
- Data: (rascunho — confirmar)
Contexto¶
O produto tem múltiplas partes que compartilham código: o app web (Next.js), o worker de IA (Python), uma extensão de navegador, e pacotes comuns (schema do banco, auth, UI). Manter isso em repositórios separados duplicaria tipos, schema e config.
Decisão¶
Usar um monorepo único (copilot/) gerenciado por pnpm workspaces +
Turborepo para orquestrar build/lint/test com cache.
Alternativas consideradas¶
- Multi-repo — isolamento maior, mas duplicação de tipos/schema e versionamento cruzado doloroso.
- npm/yarn workspaces — funciona, mas pnpm é mais rápido e econômico em disco; Turbo dá cache de tarefas.
Consequências¶
- Positivas:
@copilot/database,@copilot/auth,@copilot/uicompartilhados viaworkspace:*; um só lugar pra CI. - Trade-offs: regras de fronteira viram necessárias (ver dependency-cruiser) pra não virar "big ball of mud".
- Impacto:
packages/databaseé o pacote mais central (94 dependentes) — mudanças nele têm alto raio de impacto.