Le monorepo
Pambe est un monorepo pnpm workspaces + Turborepo. Deux familles de
workspaces, déclarées dans pnpm-workspace.yaml :
apps/*— les applications déployables.packages/*— le code partagé (design system, ports SDK, configs).
apps/docs (cette doc) ne dépend d'aucun package interne : c'est un site
statique autonome.
Turborepo
Le turbo.json racine définit le graphe de tâches. Chaque tâche fan-out sur les
workspaces qui possèdent le script correspondant :
| Tâche | Effet | Notes |
|---|---|---|
build | turbo build | dependsOn: ["^build"] — build les deps d'abord. Outputs cachés. |
dev | turbo dev | cache: false, persistent: true |
lint / typecheck / format | fan-out | apps/docs n'a pas de script lint/format → Turbo l'ignore pour ces tâches |
test | turbo test | Sans dépendances ni cache ; fan-out sur les workspaces qui ont un script test (Vitest). |
apps/docs fournit un turbo.json local qui étend la racine ("extends": ["//"]) juste pour déclarer ses sorties de build (build/**, .docusaurus/**),
afin que le cache Turbo les capture correctement.
Où poser ma prochaine modif ?
| Tu veux… | Va dans… |
|---|---|
| Un endpoint HTTP, de la logique métier | apps/api/src/routes + apps/api/src/<domaine> |
| Une page publique ou dashboard | apps/web/app/[locale] ou apps/web/app/app |
| Un composant UI réutilisable | packages/ui/src/components |
| Intégrer un SDK tiers | packages/lib/src/<capability> (voir la frontière lib) |
| De l'admin/back-office | apps/hermes |
| De la doc | apps/docs/docs (et /sync-docs si tu documentes du code) |