No description
Find a file
2026-07-05 17:23:21 +02:00
css initial spawned 2026-07-05 17:23:21 +02:00
js initial spawned 2026-07-05 17:23:21 +02:00
index.html initial spawned 2026-07-05 17:23:21 +02:00
README.md initial spawned 2026-07-05 17:23:21 +02:00

Planificateur de Vacances — Alpha

Application 100% client-side (HTML/CSS/JS vanilla) pour préparer un voyage : collecte de notes (hébergements/activités), consultation sur une carte Leaflet interactive, et construction d'un itinéraire multi-étapes.

Fonctionnalités (alpha)

  • Notes de voyage : titre, lieu, dates, type (hébergement/activité), description, prix.
  • Géocodage : recherche d'adresse via l'API publique Nominatim (OpenStreetMap), avec throttling (1 req/sec) et cache en session pour respecter la politique d'usage.
  • Carte interactive (Leaflet) : chaque note géolocalisée apparaît comme un marqueur coloré (bleu = hébergement, orange = activité) avec popup au clic.
  • Sélection de point sur la carte : possibilité de cliquer directement sur la carte pour placer une note sans passer par la recherche d'adresse.
  • Itinéraire : ajout d'étapes par clic sur la carte ou depuis une note existante, réordonnancement par glisser-déposer, tracé automatique via Leaflet Routing Machine.
  • Stockage local : toutes les données sont conservées dans IndexedDB, directement dans le navigateur — aucune donnée n'est envoyée à un serveur (hors appels Nominatim pour la recherche d'adresse).
  • Export / Import JSON : sauvegarde ou transfert du voyage sous forme de fichier JSON téléchargeable.

Installation

Aucune dépendance à installer, aucun build. Il suffit de servir les fichiers statiques (ne pas ouvrir index.html directement en file:// à cause des modules ES et des requêtes CORS).

Exemple avec Python :

cd vacances-planner
python3 -m http.server 8080

Puis ouvrir http://localhost:8080 dans le navigateur.

Alternative avec Node (npx serve) ou toute extension "Live Server" de votre éditeur.

Structure du projet

vacances-planner/
├── index.html          # Structure de la page, 3 onglets (Notes / Carte / Itinéraire)
├── css/
│   └── style.css       # Styles de l'ensemble de l'application
└── js/
    ├── db.js           # Wrapper IndexedDB (CRUD notes + étapes, export/import)
    ├── geocode.js       # Client Nominatim (geocode direct + inverse, throttling, cache)
    ├── map.js           # Carte Leaflet principale + affichage des marqueurs de notes
    ├── itinerary.js      # Carte + logique de l'itinéraire (étapes, drag&drop, routing)
    ├── notes.js         # Formulaire de saisie + rendu de la liste de notes
    └── app.js           # Orchestration générale, navigation par onglets

Modèle de données (IndexedDB)

Store notes

Champ Type Description
id string (UUID) Identifiant unique
titre string Titre de la note
lieu string Nom du lieu (texte libre, résolu via Nominatim)
lat / lng number Coordonnées géographiques
dateDebut / dateFin string (YYYY-MM-DD) Dates concernées
type "hebergement" | "activite" Catégorie de la note
description string Texte descriptif libre
prix number | null Prix en euros

Store etapes (itinéraire)

Champ Type Description
id string (UUID) Identifiant unique
noteId string | null Référence optionnelle vers une note
label string Nom affiché de l'étape
lat / lng number Coordonnées
ordre number Position dans le trajet

Limitations connues (alpha)

  • Le géocodage dépend de l'API publique Nominatim : usage raisonnable requis (throttling intégré côté client), pas de garantie de disponibilité en production.
  • Le calcul d'itinéraire (Leaflet Routing Machine) utilise le service OSRM public par défaut et nécessite une connexion internet ponctuelle pour tracer les routes.
  • Pas de synchronisation multi-appareils : les données restent locales au navigateur utilisé (export/import JSON manuel pour sauvegarder ou transférer un voyage).
  • Pas de recherche de contenu touristique automatisée : l'utilisateur saisit lui-même toutes ses notes de préparation, conformément au périmètre de l'alpha.

Prochaines pistes (post-alpha)

  • Mode hors-ligne complet avec Service Worker (PWA).
  • Suggestions de contenu (POI, avis) via API tierces, une fois le socle validé.
  • Partage d'un voyage via lien ou fichier compressé.
  • Vue calendrier des notes en plus de la vue liste/carte.