29 Jul 2026
HotterColder
Every weather app tells you tomorrow's temperature. None of them answer the question I actually have, which is whether I should dress differently than I did today.
HotterColder answers only that. One word — hotter, colder, or the same — a number for how much, and a short list of what to bring. It's a rebuild of the late colderhotter.com, pointed forward instead of backward: that site compared today against yesterday, this one compares tomorrow against today.
Live at hottercolder.vercel.app.
The verdict is feels-like
It compares apparent temperature, not the thermometer. Humidity, wind and sun are already inside that number, and what your skin gets is the thing you dress for. When feels-like and the thermometer disagree by more than 2°, the app says so and names which of the two — humidity or wind — is responsible.
The bring-list is a set of plain rules, not a generated suggestion: a clothing tier derived from the day's high, an umbrella at 45% rain chance or 1 mm, sunscreen from UV 3, a windproof layer only when it's both cool and gusty so it never shows up on a hot day, and an evening layer when the late hours fall a tier below the day. Every threshold lives in one file. When one of them is wrong, you change a number and redeploy.
The page wears the temperature
The background is a gradient on an absolute scale: deep ultramarine at −30 °C through vivid teal, a thin newsprint band at mild, then rich amber to vermilion at +50 °C. Today's colour sits at the top, tomorrow's at the bottom, so reading down the page is reading forward in time.
The colour is interpolated perceptually rather than in RGB, which is what stops the middle of the scale going muddy. The ink flips between near-black and warm cream depending on which one survives both ends of the gradient, and the contrast ratio is checked in code — if a palette can't clear WCAG AA it doesn't ship.
The stack
Next.js on Vercel, and not much else. Weather and geocoding come from Open-Meteo, which is free and needs no API key, so the repository holds zero secrets. Nothing to leak, nothing to rotate.
Location is free in the same way: the homepage reads the geo headers Vercel's edge already attaches to the request, so there's no permission popup and no IP-lookup service. Wrong city? Every city is a URL — /sofia, /tokyo, /new-york — geocoded from the slug on the fly, which makes the URL the share link too.
The rest of it:
- A rolling chart, not a calendar one. Hourly feels-like from 12 hours back to 24 ahead, with now pinned a third of the way in and the same clock hours a day later drawn dashed behind it. Missing hours render as gaps rather than invented lines.
- °C/°F switches instantly with no refetch and defaults by country. The verdict is always decided in Celsius so it can't flip when you change units; only the displayed number scales.
- Installable. A manifest and a small network-first service worker: it survives a bad connection, but never caches the forecast itself.
- Opt-in nightly push. A bell subscribes the installed app to Web Push. An hourly job recomputes each subscriber's local time from their timezone — so 21:00 stays 21:00 across daylight saving — and sends tomorrow's verdict once a day.
That last one is the only part of the app holding secrets and server-side state. Everything else is stateless.