Aller au contenu

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 :

  1. Identifiants (ID de l'utilisateur, ID du match)
  2. Domain Events (Laravel Events/Listeners)
  3. 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/