Heatwave Monitor

Climate Intelligence Dashboard

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.

HI = -42.379 + 2.049·T + 10.143·RH - 0.225·T·RH - 0.0068·T² - 0.0548·RH² + 0.00123·T²·RH + 0.00085·T·RH² - 0.0000199·T²·RH²
(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

TierApparent 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.