Pular para o conteúdo principal

Status: Approved · v2 · SPEC-ARCH-MONOREPO-001

depends_on: SPEC-PRINCIPLES-001

used_by: IS-ZERO-00.1

Monorepo e workspaces

Estrutura canônica do repositório e direção de dependências internas.

Estrutura

raizfc/
apps/mobile
apps/web
services/api
packages/config
packages/contracts
packages/mocks
packages/shared
packages/ui
docs
increments
.ai

Dependências internas

  • contracts: nenhuma.
  • mocks: contracts.
  • ui: contracts apenas quando tipo visual simples for necessário.
  • shared: contracts e mocks (factory; apps não importam mocks).
  • web/mobile: contracts, shared e ui.
  • api: contracts.

Pipeline Turbo

typecheck, lint, test, build com outputs declarados. Packages base compilam antes dos consumidores. dev é persistente e não cacheado.

Configuração

@raizfc/config exporta presets de TS/ESLint/Prettier/Vitest, sem esconder configurações essenciais. Apps podem estender quando plataforma exige.

Convenção de nomes

Packages usam @raizfc/<name>. O repo exige pnpm e packageManager fixado. Não incluir lockfiles concorrentes.

Scripts raiz

{
"scripts": {
"dev": "turbo dev",
"dev:web": "pnpm --filter @raizfc/web dev",
"dev:mobile": "pnpm --filter @raizfc/mobile dev",
"dev:api": "pnpm --filter @raizfc/api dev",
"typecheck": "turbo typecheck",
"lint": "turbo lint",
"test": "turbo test",
"build": "turbo build",
"quality": "pnpm typecheck && pnpm lint && pnpm test"
}
}

Critérios de aceite

  • pnpm install único.
  • Build graph sem ciclos.
  • Aliases não atravessam package internals.
  • Web/mobile/api sobem isoladamente.
  • Docs não dependem de build.