ADR-004 — DDD + Vertical Slice

Contexte

L'application couvre plusieurs domaines métier distincts (planning, courses, garde-manger, recettes...). Sans structure claire, le code devient rapidement un plat de spaghettis.

Décision

DDD pragmatique + Vertical Slice. Chaque bounded context est autonome dans src/applications/[bc-name]/ avec ses couches domain/, application/, infrastructure/, ui/, api/.

Alternatives évaluées

  • Couches classiques (controllers / services / repositories globaux) — couplage fort, difficile à faire évoluer par domaine.

  • Feature folders sans DDD — manque de séparation logique métier / infrastructure.

  • Packages partagés en monorepo — testés, abandonnés : complexité sans valeur à ce stade (voir ADR-001).

Conséquences

  • Plus de boilerplate par domaine, mais chaque bounded context peut évoluer indépendamment.

  • Changer d'adapter (ex: remplacer Supabase par une autre BDD) ne touche que infrastructure/.

  • Les use cases dans application/ ne contiennent aucun import React ou Supabase — logique pure.

  • Un bounded context ne peut pas importer directement depuis un autre — toujours passer par les interfaces.

Last updated