ShortStayGuide
ProjectTri-locale curated travel guide platform (EN/FR/ES). 2,997 city guides (333 cities × 3 durations), 17,445 persona guides, 2,580 neighborhoods, 93 articles, 399 roadtrips, 48 food guides — 23,562 total documents, ~17,900 geolocated stops, 3D globe, AI search. 1,162 commits, ~63 K LOC, < 10 MiB Worker.
Why I built it
Low-cost flights turned the weekend into exploration territory. A backpack, two days, a city you don't know — it became a passion. But once on the ground, the real question is: what do I absolutely need to see to feel I've actually made the most of my time? ShortStayGuide answers that: one curated guide per city, straight to the essentials, no drowning in 400 generic POIs. Built for fast travellers, by one.
Structural technical decisions
Over 23,500 pages statically generated at build time (city guides × 3 languages, persona guides, neighborhoods, articles, food, roadtrips), with selective hydration only on interactive components (globe, mega-menu, search, weather). Zero JS on the overwhelming majority of the site — SEO keeps its priority.
Over 23,500 markdown files with strictly validated frontmatter feed all routing (city / country / continent / duration / guide / persona / neighborhood / article / food / roadtrip) with no DB and no CMS. Reproducible builds, trivial deploy to Cloudflare Pages.
Cobe ships ~19 KB canvas-based instead of importing Three.js. And Leaflet (~150 KB) only loads on the guide routes that actually need it — never on the home, never on aggregation pages.
The non-trivial challenge
Producing 2,997 coherent city guides (3 durations × 333 cities × 5 continents × 3 languages EN/FR/ES), each with geo-located stops (lat / lng), normalized tags, excerpts under 90 chars, UPPERCASE continent. Plus 17,445 persona guides, 2,580 neighborhoods, 93 articles, 399 roadtrips, 48 food guides — 23,562 total documents. Fitting all of it into 17 dynamic route templates + aggregation pages per city / country / continent / persona, without blowing up build time or schema consistency. The real boss isn't the globe or perf — it's schema discipline at volume × locales.
Lesson learned
The islands architecture lets you buy interactivity à la carte: Leaflet (150 KB) never touches the homepage, and the site stays essentially zero-JS where it matters for SEO.
Features
WebGL navigation with per-city markers
Cloudflare Vectorize + Workers AI at the edge
Every stop geolocated with numbered markers
Proxy API backed by Cloudflare KV cache
In-guide flight widget, consent-gated
Cookie consent + analytics reverse-proxy