Das Problem
Jeder glaubt, das Wetter vorhersagen zu können. Die Idee hinter Totometeo war, daraus ein Spiel in Ligen zu machen, nach dem Vorbild des Fußball-Tippspiels TotoMondiale: Die Spieler tippen das Wetter einer Stadt zu einer bestimmten Uhrzeit, und die echten Daten entscheiden, wer punktet. Das Spiel muss von selbst laufen: Tipps pünktlich schließen, das tatsächliche Wetter abrufen, Punkte berechnen und Tabellen aktualisieren, ohne dass jemand von Hand eingreift.
Was ich gebaut habe
Ich habe Totometeo entwickelt, ein Online-Wettertippspiel mit öffentlichen und privaten Ligen und automatischer Wertung auf Basis echter Wetterdaten.
- Ligen – Spieler gründen öffentliche oder private Ligen und laden Freunde mit einem 6-stelligen Code ein, der leicht verwechselbare Zeichen wie I, O, 0 und 1 auslässt. Eine allgemeine Liga umfasst alle.
- Spieltage und Tipps – Jeder Spieltag enthält Wetterereignisse mit Stadt, Uhrzeit und Tippschluss. Für jedes Ereignis tippt der Spieler den Himmelszustand, die Temperatur, Regen ja oder nein, die Regenmenge in Millimetern, die Windgeschwindigkeit und optional ein seltenes Ereignis wie Hagel oder Sturm. Bis zum Tippschluss lassen sich Tipps ändern, danach sind sie gesperrt.
- Echte Wetterdaten – Nach dem Ereignis liest die App die Stundenwerte von Open-Meteo und greift auf das historische Archiv zurück, falls die Vorhersagedaten fehlen. WMO-Wettercodes werden den 7 Zuständen des Spiels zugeordnet, und seltene Ereignisse werden aus den Daten erkannt, etwa Wind ab 50 km/h.
- Wertungs-Engine – 10 Wertungsregeln und 2 Toleranzen, von 5 Punkten für den exakten Zustand bis zu einem Bonus von 10 Punkten für ein seltenes Ereignis. Jede Wertung wird mit ihrer Aufschlüsselung gespeichert, sodass ein Spieler genau sieht, woher seine Punkte stammen.
- Automatisierung – Ein zeitgesteuerter Job schließt jede Minute abgelaufene Ereignisse; ein zweiter ruft alle 15 Minuten das tatsächliche Wetter ab und wertet bis zu 25 Ereignisse pro Durchlauf.
- Tabellen und Verwaltung – Liga-, Gesamt- und historische Tabellen sowie ein Admin-Panel für Spieltage, Ereignisse, Wetterabrufe, Wertung, Regeln, Nutzer und Ligen, mit einem Protokoll der Admin-Aktionen.
Womit es gebaut ist
Node.js und Express mit serverseitig gerenderten EJS-Seiten. MySQL oder MariaDB über das Prisma ORM, mit 10 Datenmodellen. Sitzungen mit express-session und mit bcrypt gehashte Passwörter. Zeitgesteuerte Jobs mit node-cron, Prozesse verwaltet von PM2 hinter Nginx. Die Wetterdaten stammen von Open-Meteo, das keinen API-Schlüssel benötigt.
Warum so gebaut
Die Wertungsregeln liegen in der Datenbank, nicht im Code. Die Standardwerte aus der Spielspezifikation werden einmalig bei der Einrichtung geladen; danach kann der Administrator Punkte und Toleranzen im Panel ändern, ohne dass ein neues Release nötig ist. Da jede Wertung ihre Aufschlüsselung behält, bleibt jede Regeländerung für die Spieler nachvollziehbar.


