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.