Arquitetura selecionada
Monorepo
O monorepo centraliza apps, pacotes compartilhados e ferramentas. Ele favorece consistência, reaproveitamento e mudanças coordenadas entre produtos relacionados.
Estrutura de pastas
Navegue pelos arquivos para ver como a arquitetura aparece no código.
export const routes = [
{
path: 'customers',
loadChildren: () => import('@acme/customer-feature'),
},
];Prós
- Facilita compartilhar design system, tipos e utilitários.
- Permite refatorações coordenadas entre apps.
- Padroniza lint, build, testes e versionamento.
Contras
- Builds e permissões podem ficar complexos sem boas ferramentas.
- Mudanças globais impactam muitos times.
- Exige governança para evitar acoplamento excessivo.
Quando usar
- Organizações com múltiplos frontends relacionados.
- Produtos que compartilham UI, autenticação, modelos ou SDKs.
- Times que usam ferramentas como Nx, Turborepo ou workspaces.
Exemplo real
Uma empresa SaaS com portal do cliente, admin interno, documentação e pacote de componentes.
Cenário prático
O app `admin` e o app `storefront` consomem `libs/ui` para botões e tabelas, e `libs/data-access` para clientes HTTP compartilhados.
Como implementar
- Separe aplicações em `apps` e bibliotecas reutilizáveis em `libs` ou `packages`.
- Defina regras de dependência entre libs para evitar importações circulares.
- Use cache de build e execução afetada com ferramentas como Nx, Turborepo ou workspaces.
Cuidado comum
Compartilhar código demais pode transformar o monorepo em uma aplicação acoplada com vários nomes diferentes.