J'ai développé une application métier complète en Symfony 8, avec du CSS sur mesure. Cette application sert également d'exemple concret de site web pour association sportive ou club FFESSM cherchant une alternative à VPDive ou aux plugins WordPress de gestion d'adhérents. Le code est propre, évolutif, hébergé en France, sans dépendance à un service tiers payant à l'année.
Gestion complète des adhérents
Chaque membre a un profil avec ses niveaux de plongée, d'apnée et d'encadrement (hiérarchies entièrement configurables par l'admin), son numéro de licence FFESSM, et son certificat médical (CACI).
- Certificats médicaux (CACI) : le membre uploade son certificat, le référent CACI le valide ou le rejette depuis un tableau de bord dédié avec 5 statuts visuels. Les rappels d'expiration sont envoyés automatiquement 30 jours avant. Les fichiers sont chiffrés au repos.
- Licences FFESSM par QR code : le membre photographie sa carte de licence, l'application interroge le site fédéral et extrait automatiquement les données. Le référent voit 5 vérifications de conformité automatiques (nom, club, date, niveau, assurance) avant de valider.
- Cotisations : suivi saisonnier calé sur le calendrier FFESSM (septembre-août), validation individuelle ou en lot.
Calendrier d'événements avec inscriptions
Les événements sont typés (sortie mer, piscine, théorie, baptême, social) avec des champs adaptés à chaque type. Une sortie en mer inclut le bateau, le pilote, et les conditions d'éligibilité par niveau.
- Liste d'attente automatique : quand une sortie est complète, les inscriptions suivantes passent en liste d'attente. Si quelqu'un annule, le suivant est automatiquement promu et notifié.
- Éligibilité par niveau : un N1 ne peut pas s'inscrire à une sortie réservée aux N2+. Les conditions sont dynamiques et configurables.
- Événements récurrents : un créneau piscine hebdomadaire se configure une fois et génère les occurrences automatiquement.
- Chat intégré par événement pour se coordonner (matériel, covoiturage, météo).
Listes de diffusion email
Un vrai gestionnaire de listes de diffusion intégré. Le président envoie un email à liste@plongee-venetes.fr, le système le distribue aux membres de la liste. Deux types de listes (discussion ou diffusion), trois politiques de publication (tout le monde, membres, expéditeurs sélectionnés), modération optionnelle.
Les listes se remplissent automatiquement selon le profil des membres : tous les plongeurs actifs, tous les apnéistes, tous les moniteurs, etc. Quand un membre change de statut ou de rôle, ses abonnements se mettent à jour automatiquement.
Notifications push et PWA
L'application est installable comme une app native sur téléphone (Android et iOS 16.4+). Les notifications push couvrent 7 types d'événements. Chaque utilisateur configure ses heures calmes (par défaut 22h-8h), les notifications sont mises en file d'attente et envoyées au réveil.
Les référents (CACI, licences, gestionnaire) reçoivent chaque matin un récapitulatif de ce qui attend leur action. S'il n'y a rien à faire, pas d'email.
9 rôles et 16 permissions
Pas juste "admin" et "membre". L'application distingue 9 rôles fonctionnels (super-admin, admin, directeur de plongée, gestionnaire, référent CACI, référent licences, rédacteur, gestionnaire de pages, membre), chacun avec des permissions précises. Un admin peut aussi attribuer des permissions individuellement, indépendamment du rôle.
Chaque rôle dispose d'un guide utilisateur intégré dans l'application, illustré et pas-à-pas.
CMS et blog
Un éditeur de pages par blocs (12 types de blocs : texte, image, galerie, vidéo, accordéon, CTA, widgets...), un blog avec catégories et tags, des galeries photos. La partie publique présente le club, ses formations, les tarifs (dynamiques par année) et un formulaire de contact.