Hub multimodal en temps rĂ©el pour Gerzat â Bus T2C Ligne E1 & Trains TER SNCF.
â Si vous utilisez Gerzat Live pour vos trajets au quotidien, soutenez le projet avec une Ă©toile sur GitHub ! â
đ AccĂ©der Ă l'application en ligne »
FonctionnalitĂ©s âą
DĂ©marrage âą
Architecture âą
Pipeline GTFS âą
Assurance Qualité
Gerzat Live est une Progressive Web Application (PWA) conçue pour les habitants et usagers de Gerzat (Clermont Auvergne Métropole). Elle rassemble sur un tableau de bord lisible et contrasté tous les flux de mobilité en direct :
- đ Bus T2C Ligne E1 Express : DĂ©parts en temps rĂ©el (GTFS-RT) aux arrĂȘts stratĂ©giques (Champfleuri, Patural).
- đ Trains TER SNCF : DĂ©parts et arrivĂ©es en direct Ă la Gare de Gerzat (liaisons rapides vers Clermont-Ferrand en 7 min, Riom, Vichy, Moulins).
- đșïž Carte interactive multimodale : Visualisation GPS des bus en circulation, arrĂȘts et tracĂ©s de lignes avec lueur nĂ©on haute lisibilitĂ©.
- đ©ïž Afficheur mĂ©canique Split-Flap 3D : Rendu rĂ©tro-moderne avec perspective 3D, animation de bascule et micro-rebond mĂ©canique.
- đ± PWA & Offline Ready : Installable sur iPhone/Android avec service worker et mise en cache intelligente.
| Fonctionnalité | Description |
|---|---|
| Tableau des Départs & Arrivées | Affichage unifié bus + trains avec calcul dynamique des retards/avances et statuts temps réel. |
| Split-Flap 3D Cockpit | Afficheur mécanique d'aéroport/gare avec shaders CSS 3D et containment GPU anti-scintillement. |
| Timeline de Trajet Spatiale | Suivi dynamique du bus le long de son itinĂ©raire avec onde radar pulsĂ©e (ping live) et statut arrĂȘt par arrĂȘt. |
| Générateur GTFS Dynamique | Découverte automatique des calendriers SMTC jusqu'à 90 jours d'avance pour éliminer tout risque d'expiration. |
| Fallback SIV Intelligent | RequĂȘte prĂ©dictive des premiers dĂ©parts du lendemain matin lors des consultations tardives nocturnes. |
| SEO & Google Rich Results | Balisage Schema.org complet (WebSite, WebApplication, TrainStation, BreadcrumbList) et métadonnées géociblées. |
- Framework : Next.js 16 (App Router, Turbopack, Standalone output)
- Runtime : Node.js
>= 24.15.0 - Interface & Styling : React 19, Tailwind CSS v4, Lucide Icons
- Design System : Gerzat Transit Hub (Généré avec Stitch &
antigravity-design-expert) - State & Data Fetching : TanStack Query v5
- Cartographie : Leaflet 1.9, React-Leaflet 5 (Tuiles sombres CartoDB Dark Matter)
- Protobuf & Données :
gtfs-realtime-bindings,protobufjs,csv-parse,adm-zip - Qualité & Tests : Jest 30, Testing Library, ESLint (avec
eslint-plugin-security) - Hébergement & Déploiement : Coolify sur Nixpacks / Docker
flowchart LR
subgraph Sources[Sources Officielles]
T2CStatic[GTFS SMTC / Clermont Métropole]
T2CRT[GTFS-RT Protobuf / transport.data.gouv.fr]
SNCF[API SNCF / Navitia]
end
subgraph Pipeline[Pipeline de Données Local]
StaticSchedule["src/data/static_schedule.json (90j)"]
GtfsConfig["src/data/gtfs_config.json"]
LineE1Data["public/data/lineE1_data.json"]
E1StopTimes["public/data/e1_stop_times.json"]
end
subgraph Core[Services Backend Next.js]
BusService["bus.service.ts"]
E1Service["t2c-line-e1.service.ts"]
TrainService["train.service.ts"]
ItinerariesService["t2c-itineraries.service.ts"]
end
subgraph UI[Composants UI / Hub]
SplitFlap[SplitFlap 3D Board]
Timeline[TripTimeline Spatiale]
Map[Carte Live Leaflet]
GlassAlerts[BanniĂšres Glassmorphism]
end
T2CStatic --> Pipeline
T2CRT --> BusService
T2CRT --> E1Service
SNCF --> TrainService
Pipeline --> BusService
Pipeline --> E1Service
BusService --> SplitFlap
E1Service --> Timeline
E1Service --> Map
ItinerariesService -. Fallback Nuit .-> BusService
git clone https://github.com/nickdesi/BusTrainGerzat.git
cd BusTrainGerzatnpm installCréez un fichier .env.local à la racine :
# Clé API SNCF / Navitia (pour le flux des trains TER en gare de Gerzat)
SNCF_API_KEY=votre_cle_api_sncfnpm run devRendez-vous sur http://localhost:3000.
Le dépÎt intÚgre une chaßne TypeScript complÚte pour télécharger et compiler les données transport :
npm run gtfs:updateCette commande exécute séquentiellement :
scripts/gtfs/check_gtfs_update.ts: TĂ©lĂ©charge le GTFS SMTC avec timeout et retry exponentiel.scripts/gtfs/extract_lineE1_data.ts: Extrait les tracĂ©s gĂ©ographiques et arrĂȘts de la ligne E1.scripts/gtfs/generate_e1_stop_times.ts: Compile les horaires et trips dĂ©taillĂ©s.scripts/gtfs/generate_static_json.ts: DĂ©couvre dynamiquement les calendriers et gĂ©nĂšre le fichierstatic_schedule.json(jusqu'Ă 90 jours).
Le workflow .github/workflows/update-gtfs.yml tourne automatiquement deux fois par jour (17 4,16 * * *) et intĂšgre un mĂ©canisme de Keepalive pour empĂȘcher la mise en sommeil des cron jobs GitHub Actions.
Chaque contribution est soumise Ă une routine stricte de validation (Quality Gate) :
# Vérification du linter (0 warning exigé)
npm run lint
# Suite de tests unitaires & intégration (72 tests)
npm test
# Build de production
npm run build- iOS (Safari) : Ouvrir gerzatlive.desimone.fr > Bouton Partager > « Sur l'écran d'accueil ».
- Android (Chrome) : Ouvrir le site > Menu
âź> « Installer l'application ».
Projet open-source sous licence MIT. Créé et maintenu avec passion par Nicolas De Simone à Gerzat (63360).