About This Project
Heatwave Monitor is a client-side climate intelligence dashboard: it fetches public weather data, runs a heatwave-prediction engine entirely in the browser, and visualizes the result — no backend required.
Architecture
Next.js App Router + TypeScript
Every route in this project is statically typed and server/client-rendered per component, not per page.
Recharts + Framer Motion
Chart rendering and UI motion, tuned to respect prefers-reduced-motion.
Open-Meteo API
Free, keyless weather API — the only external service this project talks to.
Zero backend
No servers, databases, or API routes of our own. Every calculation on this site runs in your browser.
The Heat Index Formula
“Feels like” temperature is computed with the NWS/Steadman Rothfusz regression — the same formula used by the US National Weather Service — combining ambient temperature and relative humidity. Below roughly 27°C/40% RH, where the regression isn't valid, the engine falls back to a simpler average-based approximation, per NWS guidance.
(T in °F, RH in %, with secondary adjustments at low/high humidity extremes)
Worked example
At 32°C with 70% relative humidity, the computed heat index is 40.4°C — computed server-side on this very page by the same calculateHeatIndex() function the live dashboard uses.
WMO-Aligned Risk Thresholds
| Tier | Apparent Temperature |
|---|---|
| Normal | < 32°C |
| Caution | ≥ 32°C |
| Extreme Caution | ≥ 38°C |
| Danger | ≥ 41°C for 2+ consecutive days |
| Extreme Danger | ≥ 54°C |
Privacy & Data
This site has no backend, no accounts, and no analytics. Weather data is fetched directly from Open-Meteo in your browser and cached in localStorage for 10 minutes purely to avoid redundant requests. Your selected city, unit, and theme preference are stored the same way, on your device only.