PWA d’édition et de partage de randonnées à partir de fichiers KMZ / KML / GPX, avec tracé animé (“chenillard”), profil altimétrique, gestion de photos géolocalisées, et une fonction de visite guidée avec lecture audio des commentaires.
localStorage, photos en IndexedDB) : les modifications persistent après fermeture de l’app« Précédent / Suivant ») avec animation du marqueur le long du tracé entre deux waypointsvercel --prod).kmz, .kml, .gpxcd randonneur5
vercel --prod
Le fichier vercel.json configure les en-têtes MIME nécessaires (.kmz, .kml, .gpx) et la route du share-target.
Le projet est préconfiguré pour être servi depuis un sous-chemin /randonneur5/ (voir manifest.json et sw.js, variable SCOPE).
git init
git add .
git commit -m "Randonneur5"
git remote add origin https://github.com/<utilisateur>/randonneur5.git
git push -u origin main
Puis activer GitHub Pages sur la branche main dans les paramètres du dépôt. Le fichier 404.html gère la redirection nécessaire au bon fonctionnement du Service Worker sur ce type d’hébergement.
Le Partage de fichiers (
share_target) ne fonctionne que sur un hébergeur supportant les requêtes POST (Vercel). Sur GitHub Pages, l’application reste utilisable normalement mais ne pourra pas être proposée dans le menu “Partager” d’un gestionnaire de fichiers.
randonneur5/
├── index.html application complète (HTML + CSS + JS, mono-fichier)
├── manifest.json manifeste PWA (icônes, share_target, scope)
├── sw.js service worker (cache, réception des fichiers partagés)
├── 404.html redirection SPA pour GitHub Pages
├── vercel.json configuration des en-têtes et routes Vercel
└── icons/
├── icon-192.png / icon-512.png icônes standard
└── icon-192-maskable.png / icon-512-maskable.png icônes adaptatives Android
localStorage pour les métadonnées de session, IndexedDB pour les photos (les blobs ne sont pas sérialisables en localStorage)SpeechSynthesis), déclenchée uniquement sur action explicite de l’utilisateur — ce choix garantit la fiabilité sur mobile, où l’enchaînement automatique de lectures audio s’est révélé instable selon les navigateursstroke-dasharray + animation), réappliquée automatiquement après chaque changement de fond de carte ou de zoomLa fonction Visite a initialement été conçue avec un enchaînement automatique (lecture audio puis avance après une pause de quelques secondes). Ce mode s’est révélé instable sur certains navigateurs mobiles (blocages aléatoires de la synthèse vocale, désynchronisation de l’avance automatique). Le mode retenu — navigation et lecture déclenchées manuellement par l’utilisateur — s’est avéré nettement plus robuste sur l’ensemble des plateformes testées, sans perte d’usage significative.