Standards DMV
| Statut | Actif — v1.0 — 2026-06-27 |
| Priorité | P0 |
| Obligatoire V1 | Oui |
| Responsable | Sylvain |
| Voir aussi | Playbook CI · Playbook Git · Playbook Testing |
TypeScript
Règle fondamentale : strict: true sans exception.
{
"compilerOptions": {
"strict": true
}
}
- Le typecheck doit passer en CI. Un build qui ne type-check pas ne merge pas.
- Pas de
anysauf justification explicite dans un commentaire. - Pas de
// @ts-ignoresans explication. - Les types partagés entre frontend et API vivent dans un fichier dédié (
types/).
Laravel
Qualité minimale obligatoire :
- Pint — formatage automatique. La CI exécute
pint --test(vérifie sans modifier). - PHPStan — analyse statique, niveau 5 minimum quand présent. Détecté automatiquement par la CI depuis
phpstan.neon. - Tests PHPUnit —
php artisan testdoit passer. Un projet sans tests n'est pas acceptable en production.
Un code qui casse les tests ne pousse pas sur main.
Scripts npm obligatoires
Tout projet frontend DMV doit avoir ces scripts dans package.json :
{
"scripts": {
"dev": "next dev",
"build": "next build",
"lint": "next lint",
"typecheck": "tsc --noEmit"
}
}
L'absence de lint ou typecheck est détectée en CI et le step est sauté — mais c'est une dette à corriger.
Architecture
Moteur unique
Préférer un seul moteur (composant, service, hook) à plusieurs implémentations parallèles. Si deux endroits font la même chose, l'un des deux est un problème d'architecture.
Contexte plutôt que duplication
Passer du contexte à un composant existant plutôt que le dupliquer avec une légère variation. La duplication est acceptable uniquement quand les divergences sont fondamentales.
Simplicité avant sophistication
Trois lignes similaires valent mieux qu'une abstraction prématurée. Ne pas concevoir pour des besoins hypothétiques futurs.
Décisions d'architecture
Toute décision structurante (choix de librairie, changement de pattern, refactoring majeur) doit être documentée sous forme d'ADR minimal dans docs/decisions/ :
# ADR-001 : Titre
## Contexte
Pourquoi cette décision était nécessaire.
## Décision
Ce qui a été choisi.
## Conséquences
Ce que ça change dans le développement quotidien.
Tableau de bord qualité
| Contrôle | Frontend | Backend |
|---|---|---|
| Lint | ESLint (npm run lint) | Pint (pint --test) |
| Types | TypeScript strict (npm run typecheck) | PHPStan niveau 5 |
| Tests | — (voir Playwright) | PHPUnit (php artisan test) |
| Build | npm run build ne doit pas échouer | — |