C.C. Salouël
Une plateforme pour un club de cyclisme, où ajouter une sortie prend quelques secondes.

19 pages, API REST à rôles, MySQL, génération automatique de parcours (routage vélo BRouter, altitude, GPX, profil coloré par pente), météo et vue satellite synchronisée au tracé. Mon premier projet pensé comme un système plutôt que comme des pages.
Le contexte
Un vrai club, un vrai besoin : centraliser sorties, parcours et informations membres dans un seul endroit. Mon premier full-stack à cette échelle, de l’architecture jusqu’au schéma de base.
Le projet qui m’a appris à penser « système » plutôt que « page ».
Un pipeline d’import automatique
Plutôt que de saisir chaque parcours à la main, toute la chaîne est automatisée : import (GPX, tableur Excel du club), routage vélo réel via BRouter avec l’altitude, génération du fichier GPX et du profil altimétrique coloré selon la pente.
Ajouter une sortie devient une opération de quelques secondes ; chaque sortie arrive avec sa carte, son tracé, son dénivelé et sa météo.

Sous le capot
- Front vanilla, Express, MySQL
- Auth JWT + bcrypt, trois rôles (admin, modérateur, membre), OAuth Strava
- Import → routage BRouter → altitude → GPX → profil de pente
- Leaflet + couche satellite, 272 points d’intérêt
- Audit de sécurité traité : sanitation HTML, chiffrement des jetons, vérification des images par signature
En images


