skywatch, first demo

Version 0.1 · Captured April 17, 2026 · MIT licensed

skywatch is a small weather prototype. It pulls a 7-day forecast from Open-Meteo, resolves the user's city server-side from the IP without calling the browser Geolocation API, and can run a computer-vision check against public webcams. The figures below are taken directly from a local run of the app.

Screenshots

Hero view of skywatch showing Dhaka, 31°C, feels like 39°C.
Figure 1. Top of the dashboard, resolved to Dhaka from the IP. Current reading from Open-Meteo (ECMWF IFS).
Full skywatch dashboard for Dhaka.
Figure 2. The full dashboard for Dhaka: current conditions, ensemble panel, 7-day chart, daily cards, and the cameras section.
skywatch dashboard switched to Tokyo.
Figure 3. The same dashboard after the user changed the city to Tokyo with the manual picker.
Close-up of the ensemble confidence panel.
Figure 4. The ensemble panel, with weights and per-provider readings. Three providers are inactive until keys are supplied.
Cameras section showing the empty state.
Figure 5. The nearby-cameras section. Wired end-to-end; stays empty until a Windy API key is present or a US DOT 511 feed is in range.

Live proof Live

Each panel below pairs the most recent frame from a public webcam with the Open-Meteo forecast for the same coordinates, both fetched by your browser at the moment this page opened. Nothing in this section is stored in the repository. Reload the page and you will get a newer pair. The UTC timestamp printed on each card is the single capture time we used to request both the camera frame and the forecast, so anyone can verify them independently.

Honest caveat. The webcam hosts publish frames on their own schedule (typically every few minutes to every 10 minutes). Our timestamp is the moment we asked; the actual frame you see was taken at or slightly before that moment, whenever the source last refreshed. That is the closest to real-time these public feeds allow.

Loading current readings…

Camera 1. E6 Alsgård, Nordland, Norway

Fetching current frame…
Latest public webcam frame at E6 Alsgård, Nordland
E6 Alsgård, Nordland. 65.83°N, 13.31°E. Source: Statens vegvesen public traffic cameras.
Capture time (UTC)
Camera frame
Loading…
Forecast (same instant)
Loading…
Source
kamera.atlas.vegvesen.no/api/images/3000946_1, Norwegian Licence for Open Government Data

Camera 2. E6 Aisaroaivi, Finnmark, Norway

Fetching current frame…
Latest public webcam frame at E6 Aisaroaivi, Finnmark
E6 Aisaroaivi, Finnmark. 70.28°N, 24.59°E. Source: Statens vegvesen public traffic cameras.
Capture time (UTC)
Camera frame
Loading…
Forecast (same instant)
Loading…
Source
kamera.atlas.vegvesen.no/api/images/2000065_2, NLOD

Camera 3. NOAA GLERL, Chicago, USA

Fetching current frame…
Latest public webcam frame at NOAA GLERL Harrison-Dever Crib, Chicago
NOAA Great Lakes Environmental Research Laboratory, Harrison-Dever Crib, Chicago. 41.98°N, 87.59°W.
Capture time (UTC)
Camera frame
Loading…
Forecast (same instant)
Loading…
Source
glerl.noaa.gov/metdata/chi/chi01.jpg, public domain (NOAA)

A note on timing. The Norwegian cameras sit above or near the Arctic Circle, so between roughly 22:00 and 04:00 UTC you will see night frames. The Chicago camera is six time zones west and shows night from roughly 02:00 to 12:00 UTC. If you open the page while all three locations are in darkness, the frames will be dark, and that itself is a consistency check.

Status

What is live today, what needs a key, and what is on the roadmap.

FeatureState
Open-Meteo / ECMWF IFS forecastLive, no key
IP to city geolocation (ipapi.co)Live
Cascading city pickerLive
Ensemble fusion engineLive, 33 passing tests
7-day chart and daily cardsLive
HSV and Sobel heuristic classifierLive
US DOT 511 camera integrationLive (public data)
OpenWeatherMap providerNeeds key
Windy webcam integrationNeeds key
NVIDIA Earth-2 NIMStub, target v0.3
EfficientNet-B0 fine-tuned classifierPipeline ready, target v0.2
Google MetNet-3Placeholder, no public API yet
LLM narrationRoadmap, v0.2

Reproduce locally

The screenshots above were captured on a fresh clone with no API keys set:

git clone https://github.com/ruddro-roy/skywatch
cd skywatch
docker-compose up

Then open http://localhost:3000. See DEMO.md for the non-Docker path.