SPA React + TypeScript + Vite pour visualiser le réseau STM / métro / REM sur une carte interactive, avec fonctions Netlify, recherche, filtres, et favoris synchronisés via Netlify Identity.
- vue combinée
bus + métro + REM - filtres par mode
- recherche
lignes + stations - carte
2Detaériensi une clé MapTiler est fournie - favoris synchronisés côté compte
- bus
temps réelquand le flux STM GTFS-RT est configuré - métro et REM
estimésoustatut seulementselon la source disponible - endpoint
BIXItemps réel via le flux officiel GBFS - géocodage
adresse -> coordonnées - planificateur backend
adresse -> adresseavec modeswalking,transit,bixi
React 19ViteMapLibre GL JSNetlify FunctionsNetlify IdentityNetlify Blobs
- Installer les dépendances :
npm install- Copier les variables d’environnement :
cp .env.example .env- Lancer en local avec Netlify :
npm run dev:netlifyL’app sera servie sur http://localhost:8888.
VITE_MAPTILER_API_KEYActive les styles2DetAérienMapTiler côté frontend.MAPTILER_API_KEYUtilisée côté fonctions pour le géocodage adresse.
ORS_API_KEYOptionnelle. Si fournie, active des tracés et durées de marche/vélo plus fiables via OpenRouteService. Sans elle, le backend renvoie des estimations propres mais sans routage détaillé.
BIXI_GBFS_URLValeur par défaut testée :https://gbfs.velobixi.com/gbfs/gbfs.json
STM_BUS_VEHICLE_POSITIONS_URLURL GTFS-RT des positions de véhicules STM. Valeur testée :https://api.stm.info/pub/od/gtfs-rt/ic/v2/vehiclePositionsSTM_API_KEYClé STMAPI Key / Client ID.STM_API_KEY_HEADERHeader utilisé pour la clé si la STM attend un header. Défaut :apikey.STM_API_KEY_QUERY_PARAMNom du query param si la clé doit être ajoutée dans l’URL au lieu du header.
npm run devFrontend Vite seul.npm run dev:netlifyFrontend + fonctions Netlify + snapshot réseau.npm run prepare:dataGénèregenerated/network-model.jsonà partir des GTFS STM/REM.npm run buildGénère le snapshot réseau puis build l’app.npm run lintLance ESLint.npm run checkLance lint + build.
GET /api/bootstrapRéseau STM / métro / REM normalisé.GET /api/live?modes=bus,metro,remEntités live STM / métro / REM.GET /api/bixi?availableOnly=1Stations BIXI temps réel + alertes.GET /api/geocode?q=...&limit=5Suggestions d’adresses/lieux géocodés.GET /api/plan?from=...&to=...&modes=walking,transit,bixiItinéraires estimésadresse -> adresse.POST /api/planMême logique, en JSON. Supporte aussifromLat,fromLon,toLat,toLon.GET /api/favoritesFavoris du compte connecté.PUT /api/favoritesRemplace la liste des favoris du compte connecté.
- Créer le site sur Netlify.
- Définir les variables d’environnement listées plus haut.
- Activer
Identitysi tu veux les favoris synchronisés. - Déployer avec la commande build déjà définie dans
netlify.toml.
- Le fichier
generated/network-model.jsonest un snapshot pré-généré pour éviter de télécharger et parser les GTFS au premier appel de fonction. - Sans configuration STM GTFS-RT, la carte reste utilisable mais les bus n’auront pas de positions temps réel.
- Sans clé MapTiler, la vue
Aérienest désactivée et la carte retombe sur un style OSM 2D. - Le métro STM et le REM sont affichés comme
estimésoustatut seulement, jamais comme positions exactes confirmées. - Le planificateur backend est le plus fiable si le frontend utilise d’abord
/api/geocodepuis envoie les coordonnées choisies à/api/plan, au lieu d’envoyer uniquement une chaîne d’adresse libre.