Skip to content

Latest commit

 

History

602 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚉 Gerzat Live

Hub multimodal en temps rĂ©el pour Gerzat — Bus T2C Ligne E1 & Trains TER SNCF.

CI Status Version Production Deployment Next.js 16 React 19 Tailwind CSS v4 License: MIT GitHub stars


⭐ 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Ă©

Tableau des départs Gerzat Live Carte live de la ligne E1

📖 PrĂ©sentation

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Ă©s ClĂ©s

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.

đŸ› ïž Stack Technique

  • 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

🧭 Architecture des DonnĂ©es

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
Loading

⚡ DĂ©marrage Rapide

1. Cloner le DépÎt

git clone https://github.com/nickdesi/BusTrainGerzat.git
cd BusTrainGerzat

2. Installer les Dépendances

npm install

3. Configurer l'Environnement

Cré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_sncf

4. Lancer en Mode Développement

npm run dev

Rendez-vous sur http://localhost:3000.


🔄 Mise Ă  Jour GTFS AutomatisĂ©e

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:update

Cette commande exécute séquentiellement :

  1. scripts/gtfs/check_gtfs_update.ts : Télécharge le GTFS SMTC avec timeout et retry exponentiel.
  2. scripts/gtfs/extract_lineE1_data.ts : Extrait les tracĂ©s gĂ©ographiques et arrĂȘts de la ligne E1.
  3. scripts/gtfs/generate_e1_stop_times.ts : Compile les horaires et trips détaillés.
  4. scripts/gtfs/generate_static_json.ts : Découvre dynamiquement les calendriers et génÚre le fichier static_schedule.json (jusqu'à 90 jours).

Workflow GitHub Actions Anti-Inactivité

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.


đŸ§Ș QualitĂ© & CI

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

đŸ“± Installation sur Smartphone (PWA)

  • iOS (Safari) : Ouvrir gerzatlive.desimone.fr > Bouton Partager > « Sur l'Ă©cran d'accueil ».
  • Android (Chrome) : Ouvrir le site > Menu ⋼ > « Installer l'application ».

🌟 Stargazers & CommunautĂ©

Star History Chart


📄 Licence & Auteur

Projet open-source sous licence MIT. Créé et maintenu avec passion par Nicolas De Simone à Gerzat (63360).

About

🚌 Bus T2C & trains TER en temps rĂ©el Ă  Gerzat — dĂ©parts, arrivĂ©es, carte live GPS et favoris (Next.js + open data).

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages