Une application web progressive et moderne optimisée (PWA) pour Mobile. Gérez et recherchez des trajets de transport utilisant l'API ouverte TAG (Transports de l'Agglomération Grenobloise) et les données en temps réel GBFS (General Bikeshare Feed Specification).
- Gestion Multi-Trajets : Enregistrez et gérez jusqu'à 10 trajets différents avec sauvegarde automatique et persistante
- Recherche de Trajets : Recherchez des trajets de transport avec filtres avancés par départ, arrivée et numéro de ligne
- Stockage Persistant : Tous les trajets sont automatiquement sauvegardés dans le localStorage du navigateur
- Navigation Temporelle : Naviguez entre différents créneaux horaires pour le même trajet
- Édition des Trajets : Renommez vos trajets sauvegardés pour une meilleure organisation
- Détails des Trajets : Visualisez les détails complets, du tracé aux horaires exacts
- Refresh Manuel : Rafraîchissez vos trajets d'un seul clic
- Recherche Rapide : Fonctionnalité de recherche rapide pour des requêtes ponctuelles sans sauvegarde
- Données en Temps Réel : Intégration avec l'API TAG pour des informations actualisées des transports
- Données GBFS : Intégration des données Voi & Citiz avec localisation des stations, disponibilité, batterie restante...
- Alertes et Perturbations : Affichage des perturbations actuelles du réseau de transports
- Export/Import JSON : Exportez et importez vos configurations de trajets pour synchronisation multi-appareils
- Paramètres Avancés : Vitesse de marche personnalisable, accessibilité PMR, nombre de résultats ajustable
- Système de Cache : Cache intelligent de 1 minute pour réduire les appels API
- Icônes Dynamiques : Icônes générées par lignes (fichier lines-icons.jsx) sans images sous copyright
- Carte Interactive : Visualisation des trajets sur une carte interactive
- Mode Sombre : Support du mode sombre avec persistance des préférences
- Analyse de Performance : Intégration Vercel Analytics et Speed Insights
- Frontend : React 19 (avec React Compiler)
- Outil de Build : Vite 8
- Styling : Tailwind CSS 3 avec PostCSS
- Routage : React Router v7
- Client HTTP : Fetch API native
- Cartographie : MapLibre GL avec React Map GL
- Icônes : React Icons
- Animations : Motion
- Modales : React Modal Sheet
- Monitoring : Vercel Analytics & Speed Insights
- Linting : ESLint
- Source Données :
- API TAG Mobilités (data.mobilites-m.fr)
- Données GBFS (Vélos en libre-service)
- Données de perturbations réseau
- Node.js (v14 ou supérieur)
- npm ou yarn
- Clonez le repository :
git clone https://github.com/Palmine38/Web-TAG-express.git
cd GreGo- Installez les dépendances :
npm install- Lancez le serveur de développement :
npm run dev- Buildez pour la production :
npm run build- Aperçu du build :
npm run previewnpm run lintGreGo/
├── public/
│ ├── manifest.json
│ ├── robots.txt
│ ├── sitemap.xml
│ ├── GBFS/
│ └── logos/
├── scripts/
│ └── postbuild.mjs
├── src/
│ ├── assets/
│ ├── components/
│ │ ├── AddressSearchContent.jsx
│ │ ├── DisruptionItem.jsx
│ │ ├── gbfsSheet.jsx
│ │ ├── InfotraficSheet.jsx
│ │ ├── JourneyCard.jsx
│ │ ├── JourneyDetailsSheet.jsx
│ │ ├── JourneyMapModal.jsx
│ │ ├── JourneyResultsHeader.jsx
│ │ ├── JourneyTimeline.jsx
│ │ ├── LineInfoSheet.jsx
│ │ ├── MapSheet.jsx
│ │ ├── nearestStops.jsx
│ │ ├── NotificationToast.jsx
│ │ ├── SearchSheet.jsx
│ │ ├── StopDetailsSheet.jsx
│ │ ├── StopPickerMap.jsx
│ │ ├── TrajetTabBar.jsx
│ │ ├── WalkRouteSheet.jsx
│ │ ├── devOverlay.jsx
│ │ ├── lines-icons.jsx
│ │ └── line*.json (tracés manuels de certaines lignes)
│ ├── hooks/
│ │ ├── useCurrentTime.js
│ │ ├── useDisruptions.js
│ │ ├── useGbfs.js
│ │ ├── useGbfsPricing.js
│ │ ├── useLineColors.js
│ │ ├── usePerfSettings.js
│ │ ├── useSettings.js
│ │ ├── useStops.js
│ │ └── useTheme.js
│ ├── utils/
│ │ ├── addressSuggestions.js
│ │ ├── currentLocation.js
│ │ ├── journey.js
│ │ └── searchError.js
│ ├── App.jsx
│ ├── App.css
│ ├── index.css
│ ├── main.jsx
│ ├── fast-research.jsx
│ ├── infotrafic.jsx
│ ├── lines-icons.jsx
│ ├── mes-trajets.jsx
│ ├── navbar.jsx
│ ├── nomobile.jsx
│ ├── settings.jsx
│ └── suivi-beta.jsx
├── eslint.config.js
├── index.html
├── package.json
├── postcss.config.js
├── tailwind.config.js
├── vite.config.js
├── vercel.json
└── README.md
- Gérez jusqu'à 10 trajets de manière intuitive grâce à un appui long : supprimez, deplacez, renommez vos trajets.
- Modifiez et paufinez les détails des trajets (départ, arrivée, ligne)
- Cherchez en utilisant la carte interactive pour sélectionner des arrêts/adresses.
- Accédez à l'infotrafic en 1 clic.
- Sauvegarde automatique et persistante
- Précision record sur le calcul d'itinéraires.
- Recherche rapide & ponctuelle
- Carte interactive avec plusieurs thèmes
- Affichage instantanée des résultats
- Filtres Voi & Citiz optimisés
- Détails d'un arrêt précis : lignes, prochains passages, tracés de lignes...
- Affichage des perturbations et alertes du réseau aussi bien que Grenoble que le Pays Voironnais, voir le Grésivaudan.
- Détails des perturbations par ligne
- Navigation entre les pages principales
- Menu hamburger pour mobile
- Design responsive et optimisé tactile
- Bouton infotrafic : accedez aux informations en 1 clic
- Barre de navigation en bas style application native : rend l'expérience utilisateur plus fluide et plus agréable
- Accessibilité PMR : Options pour trajets accessibles
- Vitesse de marche : Ajustez votre vitesse de marche
- Nombre de trajets : Contrôlez le nombre de résultats retournés
- Persistance : Tous les paramètres sont sauvegardés localement
- Génère les icônes des lignes de transport
- Récupère et applique les couleurs officielles
- Évite l'utilisation d'images sous copyright
- JourneyDetailsSheet : Détails complets du trajet : carte, tracés...
- JourneyMapModal : Visualisation cartographique
- StopDetailsSheet : Informations détaillées sur les arrêts
- MapSheet : Carte interactive
- SearchSheet : Interface de recherche d'adresses
- LineInfoSheet : Informations sur les lignes
- InfotraficSheet : Perturbations et alertes
- gbfsSheet : Données concernant l'accès des vélos/trotinettes et l'autopartage des voitures (Voi & Citiz)
L'application utilise plusieurs hooks React personnalisés pour la gestion d'état et les données :
- useStops() : Récupère et met en cache les arrêts de transport
- useLineColors() : Gère les couleurs des lignes de transport
- useSettings() : Gère les paramètres utilisateur persistants
- useDisruptions() : Récupère les perturbations du réseau en temps réel
- useGbfs() : Gère les données GBFS (Vélos en libre-service)
- useGbfsPricing() : Récupère les tarifs GBFS
- useCurrentTime() : Fournit l'heure actuelle avec mise à jour
- useTheme() : Gère le thème (mode clair/sombre/bleu)
- usePerfSettings() : Configuration des paramètres de performance
- addressSuggestions.js : Autocomplétion et suggestions d'adresses
- currentLocation.js : Géolocalisation et détection de position
- journey.js : Logique de gestion et traitement des trajets
- searchError.js : Gestion et affichage des erreurs de recherche
L'application utilise l'API ouverte TAG Mobilités (SMMAG) pour les trajets de transport :
- URL de Base :
https://data.mobilites-m.fr/api/routers/default - Récupère les trajets disponibles, arrêts et itinéraires
- Données de transport en temps réel
- Perturbations et alertes réseau
Intégration des données de vélos en libre-service :
- Localisation des stations Vélo'v
- Disponibilité en temps réel des vélos et places de parking
- Informations tarifaires
- Cache Intelligent : Mise en cache de 1 minute pour réduire les appels API
- Lazy Loading : Chargement différé des composants volumineux
- React Compiler : Compilation automatique des composants pour plus de performances
L'application est déployée sur Vercel (https://gre-go.vercel.app).
- Chrome/Chromium (dernière version)
- Firefox (dernière version)
- Safari (dernière version)
- Edge (dernière version)
Responsive design optimisé pour tous les appareils
Ce projet est open source et disponible sous la licence GNU GPL v3.
Voir LICENSE pour plus de détails.
Ce projet ne serait pas possible sans :
- Les APIs opendata fournies par le SMMAG
Créé par Palmine38 avec la contribution de Antquu.
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche pour votre fonctionnalité (
git checkout -b feature/NouvelleFeature) - Commit vos changements (
git commit -m 'Ajout de NouvelleFeature') - Push vers la branche (
git push origin feature/NouvelleFeature) - Ouvrir une Pull Request
Les issues et demandes de fonctionnalités sont également bienvenues :)
