Ce projet suit les principes de l'Architecture Hexagonale (Ports et Adapteurs) et du Domain-Driven Design (DDD).
L'objectif est d'isoler au maximum la logique métier de l'infrastructure (framework Laravel, base de données, requêtes réseau) pour avoir un code robuste, pérenne et facile à tester.
Règles d'Or (Verrouillées par les tests)
Afin de faciliter l'onboarding et d'assurer que l'architecture ne dérive pas, Pest Arch et PHPStan (Level 9) garantissent les principes suivants à chaque commit :
Isolation totale du Domaine (Le Cœur) : Le code dans domain/ ne doit jamais dépendre du Framework (Illuminate\), de App\, ou de Infrastructure\. Il ne dépend que de PHP natif.
Inversion des Dépendances : L'Application et l'Infrastructure dépendent du Domaine, et jamais l'inverse. Le domaine expose des Ports (Interfaces) que l'infrastructure implémente via ses Adapters.
Entités et Objets-Valeurs Purs : Le domaine manipule ses propres Entités et ValueObjects validés et typés fortement. L'utilisation directe des modèles Eloquent est strictement interdite dans le domaine.
Conventions de Nommage : Chaque composant a une place et un suffixe stricts : *Service, *Repository, *Exception, *Dto. Les tests échoueront si la convention n'est pas respectée.