En ligne shortstayguide.com
ShortStayGuide
Une ville en un, deux ou trois jours. En trois langues.
Points du globe : illustration
En clair
Plateforme de guides de voyage curatés tri-locale (EN/FR/ES).
3 087 city guides (343 villes × 3 durées), 17 445 persona guides, 2 580 neighborhoods, 540 road trips, 333 verdicts worth-it, 46 itinéraires pays, 83 hubs day-trip, 48 food guides, 93 articles : 24 255 contenus au total, globe 3D, recherche sémantique sur l’edge, trip planner avec export PDF, switcher de devises. ~61 K LOC, 69 composants (48 Astro + 21 islands Preact).
Points forts


-
Globe 3D interactif
Navigation WebGL avec marqueurs par ville
-
Recherche sémantique sur l’edge
Cloudflare Vectorize + Workers AI à la volée
-
Trip planner persistant
Stockage D1, export PDF (Browser Rendering), liens partageables nanoid
-
Switcher de devises
Taux de change en temps réel par guide
-
Images OG dynamiques
Générées à la volée avec Satori + resvg
-
RGPD + hreflang + llms.txt
Consent cookies, hreflang EN/FR/ES, llms.txt pour crawlers IA
En chiffres
- 3 087 City guides (3 locales)
- 343 Villes uniques
- 24 255 Contenus total
- ~17 900 Stops géo
- ~61K Lignes
- < 10 MiB Worker total
Le récit
Pourquoi j’ai construit ça
Les vols low cost ont transformé le weekend en terrain d’exploration. Un sac à dos, deux jours, une ville qu’on ne connaît pas. C’est devenu une passion. Sauf qu’une fois sur place, la vraie question c’est : qu’est-ce qu’il faut absolument voir pour avoir l’impression d’avoir vraiment tiré profit de son temps ?
ShortStayGuide répond à ça : un guide curaté par ville, qui va droit aux essentiels sans noyer le lecteur dans 400 POIs génériques. Pensé pour les voyageurs rapides, par quelqu’un qui en est un.
Décisions techniques structurantes
Astro 6.2 SSG + islands Preact sur Cloudflare
Plus de 24 000 pages statiques générées au build (city guides × 3 langues, persona guides, neighborhoods, road trips, food, articles), réparties sur 94 templates de pages + 19 endpoints dynamiques, avec hydratation sélective uniquement sur les 21 islands Preact (globe, mega-menu, search, trip planner, switcher de devises). Zéro JS sur la grande majorité du site : le SEO garde toute sa priorité.
Content Collections Zod comme source de vérité
Plus de 24 000 fichiers markdown à frontmatter strictement validé (Zod 4) alimentent tout le routing (city / country / continent / duration / guide / persona / neighborhood / article / food / roadtrip) sans CMS. Génération reproductible ; D1 ne sert qu’aux données utilisateur du trip planner.
Cobe pour le globe, Leaflet en lazy-load
Cobe pèse ~19 KB canvas-based au lieu d’importer Three.js. Et Leaflet (~150 KB) n’est chargé que sur les routes guide qui en ont besoin, jamais sur la home, jamais sur les pages d’agrégation.
Le challenge non-trivial
L’industrialisation du contenu à échelle SEO
Produire 3 087 city guides cohérents (3 durées × 343 villes × 5 continents × 3 langues EN/FR/ES), chacun avec stops géocodés (lat / lng), tags normalisés, excerpts < 90 caractères, continent UPPERCASE. Plus 17 445 persona guides, 2 580 neighborhoods, 540 road trips, 333 verdicts worth-it, 46 itinéraires pays, 83 hubs day-trip, 48 food guides, 93 articles : 24 255 contenus total.
Faire tenir tout ça dans 94 templates de pages + 19 endpoints dynamiques + des pages d’agrégation par ville / pays / continent / persona, sans exploser le temps de build ni la cohérence du schéma. Le vrai boss n’est ni le globe ni la perf : c’est la discipline schéma × volume × locales.
Leçon retenue
L’architecture islands permet d’acheter l’interactivité à l’unité : Leaflet (150 KB) ne touche jamais la home, et le site reste essentiellement zero-JS là où ça compte pour le SEO.
Fiche technique
Où ça tourne @astrojs/cloudflare · Workers AI · Vectorize · D1 · Browser Rendering
| Framework | Astro 6.2 · Preact (21 islands) · Zod 4 · TypeScript |
|---|---|
| UI | Tailwind 4 · Cobe (globe WebGL) · Leaflet · Fuse.js |
| Edge / AI | @astrojs/cloudflare · Workers AI · Vectorize · Browser Rendering |
| Données | D1 · KV (météo + profils) · Content Collections |
| Growth | PostHog · @anthropic-ai/sdk · JSON-LD · Sitemap |