Sign inSign up

tristanteu/windfenster

By tristanteu

•Updated about 16 hours ago

Open-source wind forecast for water sports with stations, model ranking and alarms

Image
0

2.4K

tristanteu/windfenster repository overview

Windfenster logo

⁠Windfenster: open-source wind forecast and live wind map for kitesurfing, windsurfing and wing foiling

Self-hosted wind forecast for water sports: measured wind, five weather models and an animated wind map, for every wind station and any spot on earth.
Each station shows what it measures now, what the models predict for ten days, and which model was closest to the measurements there.
An open-source alternative to Windfinder and Windy: one Docker container, no cloud, no tracking, no API key.

CI Release Docker pulls Image Size Platforms Docs License: AGPL-3.0 Rust

curl -O https://raw.githubusercontent.com/firsttris/windfenster/main/compose.yaml && docker compose up -d

Install⁠ • Features⁠ • Screenshots⁠ • Alternatives⁠ • FAQ⁠ • Documentation⁠

Windfenster wind map: a low west of Ireland as a colour field with moving wind particles over Europe, the models ICON-D2, ICON global and ECMWF IFS, and a spot card with the coming hours at Karlsruhe Baden-Baden Airport

⁠💡 Why Windfenster?

Kiters and windsurfers check three apps before every session: one for the forecast, one for the live wind at the spot, one for the map. None of them says which weather model is actually right at your spot, and none runs on your own server.

  • Know which model to trust: 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.
  • Forecast, measured and TAF in one table: see at a glance whether today's forecast is holding, hour by hour.
  • A wind map that is fine where it matters: ICON-D2 at 2.2 km blended into ICON global and ECMWF without an edge, worldwide, ten days ahead.
  • "It works from 2 to 5 pm": your spot's wind directions and your kites and wings turn the forecast into a window, with a push or e-mail when it comes.

Runs on a Linux server, a NAS (Synology, Unraid) or a Raspberry Pi 4/5, amd64 and arm64; used in any browser on desktop and phone, installable as an app.

⁠🚀 Install

With Docker Compose:

mkdir windfenster && cd windfenster
curl -O https://raw.githubusercontent.com/firsttris/windfenster/main/compose.yaml
docker compose up -d

Open http://localhost:8080, sign up, and make yourself admin with docker compose exec windfenster windfenster admin [email protected]. The first station lists, measurements and model runs come within minutes; the map's basemap and relief follow in the background. Podman Quadlet, a reverse proxy or Cloudflare Tunnel, settings, disk space and backups are in the installation guide⁠.

⁠✨ Features

⁠🌬️ Forecast for every station and spot
  • Every METAR airport in the world and every DWD wind station, plus any point by map click or search.
  • The ten days at a glance: three-hourly wind bars with gusts, main direction, strongest wind and the models' agreement per day.
  • Day cards: wind as a growing bar with the gust under it, direction, your gear, measured and TAF to compare, weather; hourly for today and tomorrow.
  • Five models (ICON-D2, AROME, HARMONIE, ECMWF, GFS) and the Windfenster mix, weighted by how well each model hit at the station.
  • Knots, m/s or km/h, German and English, light and dark.
⁠📈 Measured and verified
  • Live wind every 10 minutes, the raw METAR translated, the TAF in plain words.
  • Model ranking per station ("Who hits here?") and automatic model choice from 30 days of verification.
  • History of the last ten days and ten years of wind statistics per month (wind rose, windy days).
  • Water levels from PEGELONLINE and the estimated current on the Rhine.
⁠🗺️ Animated wind map
  • Three models at once, the finest on top, blended without seams; wind or gusts.
  • WebGL particles that move with the map when you pan and zoom, colour field in the Windfinder scale.
  • Stations with their live wind, water gauges, a spot card with the coming hours, timeline, keyboard shortcuts, shareable links.
  • Own basemap from OpenStreetMap with relief, cut by the server itself: no map service, no key.
⁠🔔 Spots, gear and alarms
  • Passkeys or e-mail and password.
  • Saved spots with the wind directions that work there.
  • Your kites, wings, sails: the forecast shows what fits each hour.
  • Wind alarms ahead from the forecast or live from the station, by Web Push and e-mail.
⁠🛠️ Admin page
  • See what the server does: background tasks, data sources, the Open-Meteo budget, disk and warnings on one page.
  • Change it without a restart: models, refresh, basemap and relief (download now, ask first or never), limits; whatever the environment sets stays locked.
  • Accounts: open sign-up, invite only or closed; disable, sign out, export, delete.
  • Care: database backup, alarm deliveries, caches, log, legal notice and privacy policy, and a note when a new version is out.

⁠📸 Screenshots

Station page of Karlsruhe Baden-Baden Airport: model chips, live METAR wind of 16 knots with gusts, the Rhine's water level, model agreement and the airport forecast (TAF) in plain wordsTen-day wind forecast: quick view with three-hourly wind bars per day and day cards with wind, gusts, direction, measured values, TAF and weather
Wind map with the gust layer: a storm over the British Isles in yellow, orange and red with moving particlesWeather models compared with the measured wind at the station, and the model ranking card
The wind map on a phone with the spot sheet folded to one line and the timelineA forecast day card in dark mode, hour by hour with wind bars and gusts
The admin page: the data folder by part, the rows of every table, backup and compacting of the database

⁠🔀 Windfenster and the alternatives

Windfenster is made for riders who want the forecast, the measurements and the map in one place, on their own server.

What it isWhere Windfenster differs
Windfinder⁠wind forecasts and live stations, app and websiteopen source and self-hosted; shows which model was right at each station; measured and TAF in the forecast table
Windy⁠weather map with many models and layersfocused on wind for water sports; ICON-D2 blended into the global models; spot alarms with your gear
Windguru⁠forecast tables per spotmodel ranking from verification instead of choosing by hand; live wind and history next to it
Open-Meteo⁠open weather APIWindfenster is an app on top of it, adding measurements, verification, a map and alarms

⁠❓ FAQ

⁠Is there an open-source alternative to Windfinder and Windy?

Yes: Windfenster is AGPL-licensed, runs as one Docker container and uses only open data. More in the FAQ⁠.

⁠Which weather model is best for kitesurfing at my spot?

Windfenster tells you: it compares every model with the station's measurements every hour and ranks them per station. How it works⁠.

⁠Can I get a wind alarm for my spot?

Yes, by push and e-mail, ahead from the forecast or when the station measures it, optionally only when your gear fits. Alarms⁠.

⁠Does it work outside Germany?

Yes: the map and the global models cover the world, and every airport with METAR reports is a station. The 1.5–2.2 km models cover Europe.

⁠Is it free?

Yes, for private use. Open-Meteo's free API is non-commercial; commercial instances need an Open-Meteo subscription or their own Open-Meteo.

⁠📚 Documentation

The full documentation, with search, is at firsttris.github.io/windfenster⁠.

User guide⁠station pages, the forecast, the map, spots and alarms
Installation⁠Docker Compose, Podman Quadlet, reverse proxy, Cloudflare Tunnel, backups
Configuration⁠every setting
Architecture⁠how the pieces fit together
The wind map⁠from GRIB2 to WebGL particles
Forecasts and models⁠models, verification, ranking, the mix
API⁠the JSON API
Development⁠building, checks, tests, releases

⁠🛠️ Development

Requires Rust (stable), Node.js 22.12 or newer and pnpm.

git clone https://github.com/firsttris/windfenster && cd windfenster
pnpm install
pnpm dev     # server on :8080, web app with hot reload on :5173

Rust (axum, SQLite, sqlx) with the React app (Vite, TanStack Router and Query, Tailwind, MapLibre, WebGL2) built into one binary. Architecture, tests and releases: Development⁠.

⁠🤝 Contributing

Issues and pull requests are welcome. A good bug report names the station or place, the time and what you expected; for the map, the browser and graphics card. Please run the checks listed in Development⁠ before opening a pull request.

⁠📡 Data sources

Weather data by Open-Meteo.com⁠ (CC BY 4.0), DWD Open Data⁠ (CC BY 4.0) and ECMWF open data⁠ (CC BY 4.0); METAR and TAF from the Aviation Weather Center⁠; water levels from PEGELONLINE⁠; map data © OpenStreetMap⁠ contributors via Protomaps⁠; relief from Mapterhorn⁠. Every source with its licence: Data sources⁠.


⭐ Like Windfenster? A star on GitHub⁠ helps others find it.
🐛 Report a bug⁠ · 💡 Request a feature⁠

License: AGPL-3.0⁠ · © Tristan Teufel and contributors
Changed versions you pass on or run for others must offer their source code under the AGPL; a commercial license without these obligations is available via teufel-it.de⁠.
Windfenster is not affiliated with Windfinder, Windy, Windguru, Open-Meteo, the Deutscher Wetterdienst or any other weather service.

Tag summary

Content type

Image

Digest

sha256:a9216f737…

Size

48.2 MB

Last updated

about 16 hours ago

docker pull tristanteu/windfenster