尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Passerelle piétonne et écluse du bassin Morny en direct, marées et conditions de sortie bateau / kitesurf — Deauville-Trouville
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗➜ En ligne : https://pittilloni.github.io/creneau/
Bateau ou kitesurf à Deauville et sur la Côte Fleurie, et à Nouméa : savoir quand sortir (portes du bassin Morny, vent, vagues, marées, bouées, spots de kite). Anciennement « Port de Deauville » (dépôt deauville-passerelle-ecluse, l'ancienne adresse redirige ici).
Savoir en un coup d'œil, depuis son téléphone :
L'app est pensée pour un marin (profil Bateau) ou un pratiquant de glisse (profil Glisse : kite, windsurf, windfoil ou wingfoil, choisi dans l'en-tête avec le poids et le matériel). Chaque onglet de la barre du bas (Maintenant, Prévisions, Conseils, Calendrier, les mêmes dans les deux profils) est un écran à part. Les notes disent partout Favorable / Prudence / Déconseillé.
Bateau
Kitesurf
SPOTS dans index.html) ;⚠️ Horaires théoriques. Toujours confirmer avant une manœuvre via le VHF canal 9 ou la cabine de l'écluse (06 98 71 83 92).
| Deauville (Côte Fleurie) | Nouméa | |
|---|---|---|
| Fuseau | Europe/Paris | Pacific/Noumea |
| Bateau | portes du bassin Morny (PDF officiel), passerelle piétonne, bouées Candhis | Port Moselle, pas d'écluse : « sorties possibles » sur les heures de jour |
| Glisse | Deauville, Trouville, Houlgate, Cabourg | Anse Vata (243°), Méridien (279°), Aquarêve (198°), Magenta (95°), Îlot Maître (110°, à confirmer), Port Moselle (265°, à confirmer) |
| Vagues | Météo-France MFWAM | ignorées (le modèle ne voit pas la barrière de corail) : note sur le vent seul |
| Marées | PDF Ports du Calvados / SHOM, avec coefficients | calculées sur la hauteur d'eau prévue (Open-Meteo), sans coefficient |
| Urgence | 196 (CROSS), VHF 16 | 16 (COSS NC), VHF 16 ; météo VHF 65/66 |
Une seule zone par téléphone : déduite du fuseau horaire (ZONES). Un téléphone réglé sur Nouméa ne voit que Nouméa, les autres que Deauville ; aucune localisation n'est demandée. Pour forcer : ouvrir le lien avec ?zone=nc, ?zone=dv, ou ?zone=toutes pour voir les deux (réglage gardé sur le téléphone).
Clubs : bouton « Rejoindre un club » de l'onglet Conseils (code = clé de CLUBS), ou lien d'invitation ?club=<id> (gardé sur le téléphone, ?club=aucun pour le retirer). Sur iPhone, le lien n'atteint pas l'app de l'écran d'accueil (stockage séparé de Safari) : passer par le bouton. Chaque club de CLUBS a une zone, des supports avec une consigne par niveau (max:{deb:[vent, rafales, vagues], conf:[…]} : au-delà, la note bateau plafonne à « Déconseillé », à 3 nd près à « Prudence » ; voilure conseillée seulement pour un keel, habitable), choisis via la pastille de l'en-tête (support, niveau). Le club a aussi un sigle et une couleur (short, color) pour le bandeau de l'en-tête, qui ouvre la fiche club (licence FFVoile, licence : numéro et année). Démo des cours : cours du club (semaine type), carte « Cours du club » dans l'onglet Calendrier, rappel « Votre prochain cours » dans Maintenant, inscriptions locales (inscriptions) et un contact prérempli dans la fiche de sortie. Seul l'exemple fictif ycp (Yacht Club des Planches, alias demo) existe : un vrai club n'est ajouté qu'avec son accord. Champs facultatifs : burgee (couleurs du guidon), info (lieu, accueil, mail, VHF), actus.
Fiche de sortie (« Je pars en mer », mode bateau) : envoyée par SMS ou partage, sortie en cours gardée sur le téléphone (sortie, préférences sortiePrefs) jusqu'à « Je suis rentré ». Pas de serveur : aucune alerte automatique si le retour n'est pas signalé.
Tout est dans REGIONS, SPOTS et DESTS (index.html). Le bouton « Ajouter votre spot / port » des listes ouvre un e-mail prérempli (requestPlace).
L'app demande un mot de passe à la première ouverture sur chaque appareil (à demander au propriétaire du projet). Le code ne contient que son empreinte SHA-256 (PASS_HASH dans index.html). Pour le changer : printf '%s' 'nouveau-mot-de-passe' | shasum -a 256, puis remplacer PASS_HASH. Attention : c'est un verrou d'interface, pas une vraie sécurité, le dépôt et les données restent publics.
Ouvrir le lien dans Safari → bouton Partager → « Sur l'écran d'accueil ». L'app s'ouvre en plein écran avec sa propre icône, et se met à jour toute seule (voir Publier une mise à jour).
Voir ROADMAP.md pour ce qui est fait et ce qui reste à faire, et CHANGELOG.md pour l'historique des versions.
| Donnée | Source | Comment |
|---|---|---|
| Horaires des portes Morny, marées, coefficients | PDF officiel « Port de Deauville-Trouville — Horaires de manœuvres 2026 », Ports du Calvados avec le SHOM (autorisation n° 2024-282) — lien | Extrait par tools/extraire-horaires.mjs, embarqué dans la page |
| Vent (force, rafales, direction) | Météo-France, modèles AROME / ARPEGE | API Open-Meteo en direct, sans clé |
| Vagues et houle | Météo-France, modèle de vagues MFWAM | API marine Open-Meteo |
| Lever / coucher du soleil | Open-Meteo | idem |
| Vent consolidé | Météo-France (compte double), ECMWF, ICON (DWD), UKMO (Met Office), GFS (NOAA) | Open-Meteo, un seul appel models=… ; médiane par heure (attachModels dans index.html) |
| Vagues mesurées (bouées 07609 et 07611) | Candhis — Port du Havre et Cerema, Licence Ouverte Etalab — candhis.cerema.fr | Page publique relevée toutes les 30 min par GitHub Actions (tools/bouees.py), publiée sur la branche donnees (bouees.json) |
Liens de vérification affichés sur la page : bulletin météo marine Météo-France, marées SHOM de Deauville.
CORRECTIONS dans index.html.Les seuils sont expliqués sur la page (« Comment est calculé… ») et réglés dans index.html (scoreBoat, scoreKite, BEACH_ONSHORE) :
SPORTS dans index.html), parmi le matériel coché du rider. Combinaison selon la température de l'eau (modèle de courants Météo-France).index.html la page (HTML + CSS + JS, aucune dépendance à installer)
manifest.webmanifest nom et icônes pour l'écran d'accueil
icons/ icône « La fenêtre » (SVG + PNG 180/192/512 + maskable 512)
docs/logo/ logo : kit, règles d'usage, pistes, présentation
version.json numéro de version en ligne, lu par la page pour se recharger
sw.js service worker minimal, sans cache (installation Android, page hors ligne)
tools/
extraire-horaires.mjs extraction du PDF officiel -> données JSON + contrôle des incohérences
publier-version.sh nouveau numéro de version avant chaque publication
logo-creneau.py génère le kit du logo (Geist en tracés, fonttools)
bouees.py relevé des bouées Candhis (lancé par .github/workflows/bouees.yml)
krea-generer.py génération des illustrations via l'API Krea (jeton dans ~/.config/krea/token)
annotations-kite.py annotations précises (vent, bord d'attaque, positions) et carrousels
tuto/ illustrations des tutos kite (décollage, atterrissage, water start)
docs/
DESIGN.md choix de design et d'ergonomie
krea-prompts.md prompts Krea des illustrations du tuto kite
Prérequis : Node 18+ et pdftotext (brew install poppler).
curl -L -o horaires.pdf "<lien du PDF Ports du Calvados>"
pdftotext -layout horaires.pdf horaires.txt
node tools/extraire-horaires.mjs horaires.txt > data.json # les anomalies s'affichent dans le terminal
Remplacer ensuite le contenu de const DATA = …; dans index.html par celui de data.json, adapter l'année (2026) dans le code, et reporter les anomalies détectées dans ANOMALIES.
sh tools/publier-version.sh # nouveau numéro dans index.html et version.json
git commit -am "…" && git push
GitHub Pages republie main en une minute environ. La page vérifie version.json à l'ouverture, au retour sur l'app et toutes les 5 minutes. Si la version a changé, elle se recharge avec une adresse neuve (?v=…), ce qui contourne le cache de GitHub Pages et celui de l'app écran d'accueil.
Une icône ajoutée à l'écran d'accueil avant le 17 octobre 2026 (11h) n'a pas ce mécanisme : il faut la supprimer et la rajouter une fois.
Projet indépendant, non affilié à Ports du Calvados, à la mairie de Deauville, au SHOM ni à Météo-France. Les prévisions ne remplacent pas le bulletin météo marine officiel.