Arquitetura
Monorepo
Turborepo, Bun e pipeline de build
O Vendee usa Turborepo como build system e Bun 1.3.2 como runtime e gerenciador de pacotes.
Estrutura
vendee-turborepo/
├── apps/
│ ├── app/ # Dashboard SPA (Vite + React)
│ └── docs/ # Documentacao (Fumadocs / Next.js 16)
├── packages/
│ ├── supabase/ # @repo/supabase — client + types
│ ├── eslint-config/# @repo/eslint-config — flat configs
│ └── typescript-config/ # @repo/typescript-config
├── turbo.json
└── package.jsonPipeline Turbo
{
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": [".next/**", "!.next/cache/**", "dist/**"]
},
"lint": { "dependsOn": ["^lint"] },
"check-types": { "dependsOn": ["^check-types"] },
"dev": { "cache": false, "persistent": true }
}
}buildecheck-typesdependem de^build/^check-types(builds das dependencias primeiro)deve persistente e sem cachelintcascateia pelas dependencias
Comandos
bun run dev # Dev de todos os apps
bun run dev:app # Apenas apps/app (:5173)
bun run dev:docs # Apenas apps/docs (:3001)
bun run build # Build de todos
bun run lint # Lint (zero warnings)
bun run check-types # Type-check
bun run format # PrettierVariaveis de ambiente globais
Definidas em turbo.json > globalEnv:
VITE_SUPABASE_URL/VITE_SUPABASE_PUBLISHABLE_KEY(legadoVITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY) (Vite)NEXT_PUBLIC_SUPABASE_URL/NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY(legadoNEXT_PUBLIC_SUPABASE_ANON_KEY) (Next.js)