Aller au contenu principal

Standards DMV

StatutActif — v1.0 — 2026-06-27
PrioritéP0
Obligatoire V1Oui
ResponsableSylvain
Voir aussiPlaybook 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 any sauf justification explicite dans un commentaire.
  • Pas de // @ts-ignore sans 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 PHPUnitphp artisan test doit 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ôleFrontendBackend
LintESLint (npm run lint)Pint (pint --test)
TypesTypeScript strict (npm run typecheck)PHPStan niveau 5
Tests— (voir Playwright)PHPUnit (php artisan test)
Buildnpm run build ne doit pas échouer