Pular para o conteúdo principal

Orquestração do Monorepo

Uma referência abrangente para desenvolvedores gerenciarem o monorepo Elo Orgânico, infraestrutura e automação.


Executando a Plataforma

Utilizamos o Turborepo e o Docker Compose para orquestrar as aplicações e suas respectivas infraestruturas locais (banco de dados e cache) em scripts unificados.

  • Iniciar Stack de Desenvolvimento: pnpm instance:dev (Inicia bancos locais no Docker e executa Web e API no host)
  • Parar & Liberar Portas: pnpm instance:down (Para os containers e libera as portas 3000 e 5173)
  • Resetar Infraestrutura: pnpm instance:reset (Para, apaga os volumes do MongoDB/Redis e reconstrói os containers)

Infraestrutura (Docker)

O projeto utiliza dois arquivos Compose por contexto delimitado, com responsabilidades estritamente separadas.

Infraestrutura de Desenvolvimento (compose.dev.yaml)

Inicia apenas os serviços de infraestrutura local. As aplicações rodam diretamente no host via pnpm *:dev.

EscopoComandoDescrição
Instânciapnpm instance:upInicia o MongoDB (Replica Set) e o Redis para a Instância.
Instânciapnpm instance:downPara os containers da Instância e libera as portas 3000 e 5173.
Instânciapnpm instance:resetRemove volumes e reinicia a infraestrutura da Instância.
Portalpnpm portal:upInicia o MongoDB (Replica Set) e o Redis para o Portal.
Portalpnpm portal:downPara os containers do Portal e libera as portas 3001 e 5174.
Portalpnpm portal:resetRemove volumes e reinicia a infraestrutura do Portal.

Stack de Produção e Staging (compose.prod.yaml)

Compila e implanta a stack de aplicação completa (API + Web/Nginx + Redis). Sem MongoDB local — a produção conecta-se ao MongoDB Atlas. Produção e staging compartilham o mesmo arquivo Compose; apenas o arquivo --env-file difere.

EscopoComandoDescrição
Instânciapnpm instance:prodCompila e inicia a stack da Instância com .env.prod.
Instânciapnpm instance:stagingMesma stack com .env.staging (cluster staging do Atlas).
Instânciapnpm instance:prod:downPara a stack de produção/staging da Instância.
Portalpnpm portal:prodCompila e inicia a stack do Portal com .env.prod.
Portalpnpm portal:stagingMesma stack com .env.staging.
Portalpnpm portal:prod:downPara a stack de produção/staging do Portal.

Gestão de Workspace

Lidando com dependências internas, catálogos, checagens de compilação e linting.

Orquestração Global (Turborepo)

Estes comandos são executados em paralelo em todas as workspaces ativas do monorepo usando as configurações definidas no turbo.json:

  • Validar Tipagem de Todo o Projeto (Typecheck): pnpm typecheck (Executa turbo run typecheck em paralelo)
  • Lint de Todo o Projeto: pnpm lint (Executa turbo run lint em paralelo)
  • Limpar pastas node_modules: pnpm clean (Executa o npkill para recuperar armazenamento)
  • Adicionar Dependência ao Catálogo: pnpm add <package> --catalog
  • Adicionar Dependência a App Específica: pnpm add <package>@catalog: --filter <package-name>

Validações Específicas por Workspace

Execute typecheck ou linter apenas para um contexto delimitado do monorepo:

ContextoComando de TypecheckComando de Lint
Instânciapnpm instance:typecheckpnpm instance:lint
Portalpnpm portal:typecheckpnpm portal:lint
Studiopnpm studio:typecheckpnpm studio:lint
Toolspnpm tools:typecheckpnpm tools:lint
Linter & Formatação Integrados

Utilizamos o eslint-plugin-prettier para integrar as regras de formatação do Prettier diretamente no ESLint para arquivos .ts, .tsx, .js e .jsx. Executar qualquer um dos comandos de lint acima irá validar a qualidade do código e formatar os arquivos em um único passo. O uso direto do CLI do prettier é reservado apenas para arquivos de configuração e documentação (.json, .yaml, .md e .mdx).


IA & Studio (MCP)

Orquestrando o Model Context Protocol e a ponte de design.

  • Penpot Studio: pnpm penpot:up / pnpm penpot:down
  • Aide AI Bridge: pnpm penpot:aide:up / pnpm penpot:aide:down
  • Busca Context7: (Via Agente de IA) Pesquisa profunda em documentação técnica.

Pipelines de Build

  • Build Completo: pnpm build
  • Build Core (Instância): pnpm --filter @elo-instance/core build
  • Build Core (Portal): pnpm --filter @elo-portal/core build

Última Atualização: Junho de 2026