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.