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.

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.