Il problema
Tutti pensano di saper indovinare il tempo. L’idea di Totometeo era trasformarlo in un gioco a leghe, sul modello del pronostico calcistico TotoMondiale: i giocatori prevedono il meteo di una città a una certa ora e sono i dati reali a decidere chi fa punti. Il gioco deve andare avanti da solo: chiudere i pronostici in tempo, recuperare il meteo reale, calcolare i punti e aggiornare le classifiche, senza che nessuno debba farlo a mano.
Cosa ho costruito
Ho realizzato Totometeo, un gioco online di pronostici meteo con leghe pubbliche e private e punteggio automatico calcolato sui dati meteo reali.
- Leghe — i giocatori creano leghe pubbliche o private e invitano gli amici con un codice di 6 caratteri che esclude i caratteri facili da confondere, come I, O, 0 e 1. Una lega generale comprende tutti.
- Giornate e pronostici — ogni giornata contiene eventi meteo con una città, un orario e una scadenza. Per ogni evento il giocatore prevede le condizioni del cielo, la temperatura, se pioverà o no, i millimetri di pioggia, la velocità del vento e, se vuole, un evento raro come grandine o vento forte. I pronostici si possono modificare fino alla scadenza, poi si bloccano.
- Dati meteo reali — dopo l’evento l’app legge i valori orari da Open-Meteo e, se mancano i dati di previsione, ripiega sull’archivio storico. I codici meteo WMO vengono ricondotti alle 7 condizioni del gioco e gli eventi rari vengono rilevati dai dati, per esempio vento a 50 km/h o più.
- Motore di punteggio — 10 regole di punteggio e 2 tolleranze, dai 5 punti per la condizione esatta al bonus di 10 punti per l’evento raro. Ogni punteggio viene salvato con il suo dettaglio, così il giocatore vede esattamente da dove arrivano i punti.
- Automazione — un processo pianificato chiude ogni minuto gli eventi scaduti; un altro, ogni 15 minuti, recupera il meteo reale e assegna i punti a un massimo di 25 eventi per ciclo.
- Classifiche e amministrazione — classifiche di lega, generale e storica, e un pannello di amministrazione per giornate, eventi, recupero dei dati meteo, punteggi, regole, utenti e leghe, con un registro delle azioni degli amministratori.
Con cosa è fatto
Node.js ed Express con pagine EJS generate dal server. MySQL o MariaDB tramite l’ORM Prisma, con 10 modelli di dati. Sessioni con express-session e password protette con hash bcrypt. Processi pianificati con node-cron, gestiti da PM2 dietro Nginx. I dati meteo arrivano da Open-Meteo, che non richiede una chiave API.
Perché è fatto così
Le regole di punteggio stanno nel database, non nel codice. I valori predefiniti previsti dalle specifiche del gioco vengono caricati una sola volta all’installazione; poi l’amministratore può cambiare punti e tolleranze dal pannello senza un nuovo rilascio. Poiché ogni punteggio conserva il suo dettaglio, qualsiasi modifica alle regole resta trasparente per i giocatori.


