A Ascensão dos Monorepos: Arquitetura com Turborepo
Chega de duplicar configurações do ESLint e pacotes em 3 repositórios diferentes. Entenda as vantagens do padrão Monorepo com Turborepo para suas aplicações.
Se a sua empresa constrói um Dashboard Admin, um Site Público (E-commerce) e um App Mobile, é muito provável que você acabe criando três repositórios no Github. O problema? Você vai copiar e colar os mesmos arquivos de configuração, o mesmo Design System (Botões, Cores) e os mesmos Tipos TypeScript (Interfaces) em todos eles.
A arquitetura de Monorepo resolve isso centralizando todos os subprojetos num único repositório Git, divididos por pastas em Workspaces.
O Paradigma dos Workspaces
Com NPM, Yarn ou PNPM Workspaces, nós dividimos o projeto em duas grandes áreas: apps e packages.
meu-monorepo/
├── apps/
│ ├── web/ (Next.js - Loja)
│ ├── admin/ (React Vite - Painel)
│ └── api/ (Node.js - Backend)
├── packages/
│ ├── ui/ (Componentes React compartilhados: Botões, Inputs)
│ ├── eslint-config/ (A regra do Lint da empresa)
│ └── tsconfig/ (Config do Typescript)
└── package.json (Configuração do Workspace global)A mágica acontece quando o apps/web e o apps/admin instalam o packages/ui como se fosse uma dependência normal (import { Button } from '@meu-app/ui'), garantindo que se você alterar a cor do botão na pasta ui, todas as aplicações são atualizadas simultaneamente.
Turborepo: O Orquestrador Inteligente
Ter tudo na mesma pasta gera um desafio enorme em CI/CD (Github Actions): você não vai querer rodar o Build dos três apps se o commit alterou só um parágrafo do site.
O Turborepo (criado pela Vercel) mapeia as dependências entre essas pastas. Se você der o comando turbo run build, ele olha o que mudou desde o último commit.
- Se alterou só o
apps/web, ele só faz o build da web. Os outros recebem CACHE instantâneo. - Se alterou o
packages/ui, o Turbo é inteligente o suficiente para saber que a Web e o Admin usam a UI, então ele vai refazer o build de ambos, em paralelo.
O sistema de Remote Caching (Cache Remoto) do Turborepo permite que o cache do build que você fez no seu computador na terça-feira seja reutilizado pelo computador do seu colega na quarta-feira (via nuvem Vercel). Build de minutos passam a levar milissegundos.
Conclusão
Monorepos não são para qualquer sistema (exigem um conhecimento mais avançado de DevOps e Node.js). Mas para empresas de produto que compartilham identidade visual e regras de negócios entre múltiplos fronts, eles são o salva-vidas definitivo da dívida técnica.