La plateforme tout-en-un
des associations et des collectifs.
Conversations, événements, cotisations, kanban, sondages, cagnottes, jeux, planning — 87 widgets construits sur une architecture hexagonale stricte avec des bounded contexts DDD et un bus CQRS.
Stack technique
Choix techniques modernes, sans dette ni magie cachée.
Architecture hexagonale stricte
Le domaine n'a aucune dépendance externe. Symfony, Doctrine et Mercure sont des adapters branchés sur des ports.
Domain
PHP pur. Aggregates, Value Objects, Domain Events, interfaces de Repository et de Port.
- Aucun import Symfony / Doctrine
- Value Objects immutables avec
equals() - Aggregates émettent leurs propres Domain Events
Application
Orchestration via CQRS. Commands modifient, Queries retournent des Read Models DTO.
- Handlers
#[AsMessageHandler] - Read Models distincts des entités
- Domain Events publiés après persistance
Infrastructure
Implémente les ports : repositories Doctrine, clients HTTP, adapters Mercure, chiffrement.
- Tokens OAuth chiffrés (libsodium)
- Mappers JSON ↔ Domain par plateforme
- Webhooks signés vérifiés en entrée
UI
Adapters entrants : controllers HTTP, console, webhooks. Aucune logique métier.
- Controllers dispatch
CommandBus/QueryBus - CSP
script-src 'self'— Stimulus only - Templates 100 % responsives, mobile-first
17 bounded contexts
Widgets composables
Chaque conversation devient un espace de travail. Insérez n'importe quel widget depuis le menu +.
Comptes de démonstration
Toutes les données sont pré-chargées : organisation MJC Montrouge, 11 membres, 7 canaux, événements, cotisations, salles, page publique.