Ir para o conteúdo

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/ui compartilhados via workspace:*; 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.