Skip to content

Windfenster: open-source wind forecast and wind map for water sports

Windfenster shows, for every wind station, what it measures right now, what the weather models predict for the next ten days, and which model was closest to the measurements there. It has an animated wind map with three models blended into one picture, alarms when your spot works, and it runs as one Docker container on your own server.

Windfenster's wind map: a low west of Ireland drawn as a colour field with moving particles over Europe, the model chips ICON-D2, ICON global and ECMWF IFS, and a spot card for Karlsruhe Baden-Baden Airport with its coming hours

What it does

  • Forecast per station: the ten days at a glance, then every day as a card: wind as a bar that grows, the gust right under it, direction, weather; hourly for today and tomorrow.
  • Which model hits here?: every model is checked against the station's measurements every hour; the page opens with the one that was closest there in the last 30 days.
  • Wind map: ICON-D2 (2.2 km), ICON global (13 km) and ECMWF (25 km) as one seamless colour field with particles, worldwide, ten days ahead.
  • Measured and TAF: every METAR airport in the world and the DWD's 10-minute stations, with the airport forecast (TAF) in plain words.
  • Water levels: PEGELONLINE gauges on German rivers, with the estimated current on the Rhine.
  • Spots and alarms: save a spot with the wind directions that work there, enter your kites and wings, get a push or an e-mail when it works.

Where to start

You want to Read
use Windfenster User guide
run your own instance Installation, then Configuration
understand how it works Architecture, then the pages under How it works
build on it or change it API and Development

In one paragraph

A Rust server (axum, SQLite) fetches forecasts from Open-Meteo, measurements from aviationweather.gov and the DWD, water levels from PEGELONLINE, and the raw model fields (GRIB2) for the map straight from the DWD and ECMWF. It verifies every model against the measurements, turns the model fields into textures and cuts its own basemap from OpenStreetMap. A React app, built into the same binary, shows it all; the map draws the wind with WebGL2 on top of MapLibre. Everything runs on your server: no map service, no API key, no tracking.