No description
Added a test to verify that every Unit and Integration test file contains a covers() declaration. |
||
|---|---|---|
| .intellipest | ||
| bootstrap | ||
| config | ||
| database | ||
| documentation | ||
| public | ||
| resources | ||
| routes | ||
| src | ||
| storage | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .env.testing | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| artisan | ||
| composer.json | ||
| composer.lock | ||
| phpcs.xml | ||
| phpstan.neon | ||
| phpunit.xml | ||
| pint.json | ||
| README.md | ||
| rector.php | ||
| TEST.md | ||
Arcadia API
Arcadia API est une application construite en respectant les principes de la Clean Architecture et du Domain-Driven Design (DDD).
Sommaire
Architecture
L'application est découpée en couches strictes respectant la règle de dépendance vers l'intérieur :
- Domain : Le coeur métier de l'application utilisant un language commun. Ne dépend de rien d'autre (Shared autorisé). Contient les Entités, Value Objects, et les interfaces (Ports) pour interagir avec le monde extérieur.
- Application : Les Use Cases. Orchestre la logique métier en utilisant le Domaine. Ne dépend d'aucune infrastructure ou framework (sauf
Shared). - Presentation : Les points d'entrée de l'application (API Controllers, Presenters). Formate les données pour l'extérieur et gère les requêtes HTTP ou une interface cli.
- Infra : L'implémentation technique (Eloquent, base de données, réseau, etc.). Implémente les interfaces définies par le Domaine.
- Shared : Le socle technique commun (interfaces DDD de base, Value Objects génériques comme
Pagination).
Principes d'implémentation
- API Read-only : Pour l'instant, l'API ne fait qu'exposer des données. Nous utilisons donc le pattern
Directory(lecture seule) plutôt queRepository(lecture/écriture) dans nos Ports de Domaine. - Pattern Presenter : Les Use Cases (dans
Application) retournent unOutputagnostique. La couchePresentationutilise ensuite desPresentersspécifiques (ex: API) pour transformer cetOutputen une vue exploitable par l'interface finale (JSON). - Validation : La validation stricte du format (ex: HTTP) est gérée dans la couche
Presentation(via lesFormRequest). La validation des règles métier est garantie au coeur duDomainpar lesValue Objects, qui lèvent des exceptions de typeInvalidArgumentExceptiontraduites en HTTP 422 par le gestionnaire d'erreurs global.
Tests & Assurance Qualité
Consulter le document TEST.md pour la stratégie de test en pyramide (Unit, Integration, Feature, Arch) et les commandes d'exécution avec couverture de code.
