Cette page décrit l’architecture et l’organisation du code de Châtaigne,
conçue pour être modulaire, maintenable et évolutive.
Organisation Générale
Châtaigne utilise une architecture monorepo organisée avec les dossiers principaux suivants :Modules principaux
1
Domain Module
Le cœur de l’application :
- Contient toutes les entités métier
- Implémente la logique métier pure
- Ne dépend d’aucun autre module
2
Application Module
La couche d’orchestration :
- Orchestre les use cases
- Injecte les dépendances nécessaires
- Gère les transactions
- Dépend uniquement du Domain Module
3
Infrastructure Module
La couche technique :
- Implémente les repositories
- Gère les connexions externes
- Configure les services tiers
- Implémente les adaptateurs
4
Presentation Module
L’interface avec l’extérieur :
- Expose les API REST
- Gère la validation des entrées
- Configure la documentation OpenAPI
- Implémente la sécurité et l’authentification
Conventions de Nommage
Nous utilisons des conventions de nommage strictes pour maintenir la cohérence
du code.
Fichiers
Tous les fichiers suivent le format kebab-case avec des suffixes spécifiques selon leur type :Entités & Repositories
•
.entity.ts - Entités• .repository.ts - RepositoriesUse Cases & Controllers
•
.usecase.ts - Use cases• .controller.ts - ControllersServices & Adaptateurs
•
.service.ts - Services• .adapter.ts - AdaptateursEvents & Listeners
•
.event.ts - Events• .listener.ts - Event ListenersInjection de Dépendances
NestJS fournit un système d’injection de dépendances robuste que nous
utilisons de la manière suivante :
- Les interfaces sont injectées via des tokens
- La configuration se fait dans les modules respectifs
Points d’Attention
Dépendances
• Les dépendances pointent vers l’intérieur (Domain)• Communication uniquement entre couches adjacentes
Adaptateurs
• Obligatoires pour la transformation de données• Isolation claire des formats de données externes
Repositories
• Manipulation exclusive des entités domain• Pas de logique métier
Use Cases
• Une seule responsabilité• Orchestration claire des dépendances