Domaines DDD — Carte des Bounded Contexts¶
Cette page présente la carte des domaines (Domain Map) de Primatch, illustrant les relations entre les différents Bounded Contexts.
Carte des domaines¶
graph TB
subgraph AUTH["🔐 Auth Context"]
U[User]
T[Token JWT]
P[Permission / Role]
end
subgraph GAME["🎾 Game Context"]
G[Game]
I[Invitation]
S[Score]
Team[Team]
end
subgraph CLUB["🏟️ Club Context"]
C[Club]
Ter[Terrain]
end
subgraph RESERVATION["📅 Reservation Context"]
Res[Reservation]
Cre[Créneau]
end
subgraph CHAT["💬 Chat Context"]
Msg[Message]
Conv[Conversation]
end
subgraph SCORE["🏆 Score Context"]
Sc[Score]
Val[Validation]
end
AUTH -->|"User identifié\n(ID référence)"| GAME
AUTH -->|"User identifié\n(owner_id)"| CLUB
CLUB -->|"Club référencé\n(lieu de match)"| GAME
CLUB -->|"Terrain référencé"| RESERVATION
GAME -->|"Partie créée\ndéclenche chat"| CHAT
GAME -->|"Partie terminée\ndéclenche score"| SCORE Relations entre contextes¶
| Source | Cible | Type | Description |
|---|---|---|---|
| Auth → Game | Customer/Supplier | Auth fournit l'identité du joueur au contexte Game | |
| Auth → Club | Customer/Supplier | Auth fournit l'identité du gestionnaire au contexte Club | |
| Club → Game | Customer/Supplier | Une partie peut être associée à un club (lieu de jeu) | |
| Club → Reservation | Customer/Supplier | Un terrain de club peut être réservé via un créneau | |
| Game → Chat | Event-driven | Un GameCreated event crée la conversation associée | |
| Game → Score | Event-driven | Un GameCompleted event déclenche la validation du score |
Règles d'isolation¶
Pas de couplage direct entre contextes
Les contextes ne doivent pas importer directement les models ou services des autres contextes. La communication se fait uniquement via :
- Identifiants (ID de l'utilisateur, ID du match)
- Domain Events (Laravel Events/Listeners)
- DTOs partagés (si nécessaire)
Correspondance Code ↔ Domaine¶
| Bounded Context | Dossier Backend | Composants Frontend |
|---|---|---|
| Auth | app/Domain/Auth/ | pages/auth/, hooks/useAuth.ts |
| Game | app/Domain/Game/ | pages/games/, components/features/game/ |
| Club | app/Domain/Club/ | pages/clubs/, components/features/club/ |
| Reservation | app/Domain/Reservation/ | pages/reservations/ |
| Chat | app/Domain/Chat/ | components/features/chat/ |
| Score | app/Domain/Score/ | components/features/score/ |