← Back to blog

15 March 2026 · 400 words

The stack behind FOMO Sun

technical

Every time someone opens FOMO Sun, a surprising number of services get involved. Here's the full picture.

Frontend + hosting

  • Next.js 14 (App Router) with TypeScript and Tailwind.
  • Vercel for hosting, edge CDN, analytics, and speed insights. Every push to main auto-deploys production. Every PR gets a preview URL.

Weather data

  • Open-Meteo for primary forecasts — hourly sunshine, clouds, temperature. Free, reliable, no key.
  • MeteoSwiss open data for Swiss destinations, following the "use the national model when in the national domain" principle.
  • A custom scoring layer that blends sun score, travel time, and net sun gain into the FOMOscore™.

Travel + transit

  • opentransportdata.swiss (OJP) for Swiss train timetables.
  • Pre-computed train-time datasets so we can rank 300+ destinations without hitting the live API on every request.
  • Car estimates via distance-and-average-speed heuristics until a real routing API is worth the cost.

Geography + maps

  • swisstopo tiles for the Sun Map basemap.
  • Leaflet for interactive markers and overlays.
  • A custom sun-hours interpolation layer that renders as a soft gradient over Switzerland.

Content

  • Notion as a headless CMS for the blog and the About page. Drafts live in Notion, publish status toggles them live.
  • All 323 destination stamps are AI-generated vintage travel posters via Gemini 2.5 Flash Image, then manually curated.

Analytics

  • Vercel Analytics and Vercel Speed Insights, both cookieless.
  • Umami as an optional self-hosted layer when we want custom events.

Dev partners

  • Claude (Opus 4.6) for pair programming, code reviews, release polish, and rewriting copy that sounded like dev jargon.
  • Codex (GPT-5) for short-horizon debugging spikes.

What this actually means

One developer, weekends and evenings, can ship an app that talks to national weather services, draws a usable map of Switzerland, and suggests a sunny day trip in under a second. That would have been a team of six a decade ago.

The hard part isn't the stack. The hard part is still taste — choosing what to leave out.