Aller au contenu
- Interface : français uniquement, libellés écrits en dur dans les
composants (pas de couche de traduction FR/EN — Paraglide a été retiré).
- Code, commentaires et identifiants : l’anglais (camelCase) comme dans tout
le code TypeScript ; les libellés utilisateur restent en français.
- Formateur/linter : Biome (
npm run check, npm run format). Respecter
ses règles avant de finir une tâche.
- Imports : alias canoniques
#/* (→ src/) et @/* (compat). Les imports
relatifs restent acceptables entre fichiers proches d’une même couche.
- TypeScript strict :
noUnusedLocals, noUnusedParameters, verbatimModuleSyntax
(utiliser import type pour les imports de types).
core/ : fondation générique, sans connaissance des modules métier.
features/ : logique métier uniquement ici (voir src/features/README.md).
routes/ : colle — pas de logique métier, pas de fetch brut, pas de
requêtes TanStack Query directement (on appelle les hooks de features/core).
components/ui : composants shadcn générés, ne pas les dupliquer ;
composer les écrans avec components/layout + components/ui.
- Types générés : ne jamais dupliquer un DTO du client OpenAPI généré ;
ajouter des types dérivés dans
features/<module>/models.
- Pas de
useUtils() : importer chaque hook/utilitaire nommément
(useCurrentUser(), useCan(code), createQueryKeys(...)).
- Pas de
useState pour l’état serveur : tout état serveur passe par
TanStack Query (core/query).
- Pas de nouvelle dépendance sans justification : la poser dans la PR et
documenter pourquoi.
- ❌ Créer
src/hooks/ ou src/lib/ génériques fourre-tout (l’organisation se
fait par couche core/ / features/).
- ❌ Éditer les fichiers générés (
schema.ts, routeTree.gen.ts).
- ❌ Inventer des endpoints, permissions ou modules (voir Autorisation).