An open weather platform for the Netherlands, built on KNMI open data.
openweer.nl — animated rain radar, per-location 2-hour minute-by-minute rain forecast, current observations, and short-range hourly forecast extending to ~48 hours via HARMONIE-AROME.
Inspired by popular rain radar companies, OpenWeer is powered exclusively by the KNMI Open Data Platform (CC-BY-4.0).
🚧 Pre-alpha. Building publicly, in steps. See CLAUDE.md for engineering rules.
KNMI MQTT ──► ingest worker ──► raw HDF5/GRIB on disk
│
▼
tiler worker
(HDF5 → PNG XYZ tiles)
│
▼
browser ◄── nginx/Caddy ◄──┬── /tiles/* (static PNG)
├── /api/* (FastAPI)
└── / (React Router v7 SSR)
A single VPS, four Docker services, no database. See the implementation plan for milestones.
| Layer | Choice |
|---|---|
| Backend | Python 3.13 · FastAPI · asyncio · httpx · aiomqtt · h5py · rasterio |
| Frontend | React Router v7 (framework mode) · MapLibre GL · Tailwind · TypeScript |
| Reverse proxy | Caddy (auto-TLS) |
| Deploy | Docker Compose on a single VPS (Hetzner / DigitalOcean) |
git clone git@github.com:robertkeus/openweer.git
cd openweer
cp .env.example .env # edit KNMI_API_KEY
docker compose upFull local-dev instructions land with Step 6.
The api/ and web/ packages can be developed independently.
# Backend
cd api
uv sync --all-extras
uv run pytest
uv run ruff check .
# Frontend (Step 5+)
cd web
npm ci
npm run devWeather data © KNMI, CC-BY-4.0. See DATA_LICENSE.md.
OpenWeer source code is MIT-licensed. See LICENSE.