Como funciona
Em vez de ter um repositório por projeto, todos ficam em um só. Ferramentas como Turborepo, Nx e Bazel gerenciam dependências, builds e testes. Empresas como Google e Meta usam monorepos para milhares de projetos.
A estrutura típica tem uma pasta por projeto ou pacote, com compartilhamento de código através de pacotes internos. Mudanças que afetam múltiplos projetos são feitas em um único commit e testadas juntas.
Monorepos exigem ferramentas adequadas. Sem elas, builds lentos e conflitos de merge tornam a experiência ruim. Com elas, a coordenação entre times melhora significativamente.
Exemplo pratico
Uma startup de IA pode ter um monorepo com o backend (API), frontend (dashboard), biblioteca compartilhada de prompts e scripts de treinamento. Mudanças que afetam múltiplos projetos são feitas em um único commit e testadas juntas.
Se um desenvolvedor muda a interface da API, o CI/CD automaticamente testa o frontend que consome essa API. Isso evita que mudanças quebram a integração entre projetos.
Para que serve
Simplificar compartilhamento de código, garantir consistência e facilitar refatorações em larga escala. Para times de IA, monorepo permite versionar código de modelos, prompts e aplicações juntos.
Para desenvolvedores, isso significa menos overhead de gerenciar múltiplos repositórios. Para times, significa melhor colaboração e visibilidade do que está acontecendo em todo o projeto.
Diferenca entre monorepo e multirepo
Monorepo: um repositório para tudo. Facilita compartilhamento e coordenação, mas pode ser pesado para times grandes sem as ferramentas certas. Multirepo: um repositório por projeto. Mais simples de gerenciar individualmente, mas dificulta compartilhamento de código e coordenação.
A escolha depende do tamanho do time, da complexidade do projeto e das ferramentas disponíveis. Times pequenos geralmente preferem monorepo. Times grandes podem usar multirepo com ferramentas de sincronização.