Seguire il fantasy MotoGP con un gruppo di amici richiede dati aggiornati ogni ora durante i weekend di gara. Le app ufficiali sono lente, piene di pubblicita e non mostrano il breakdown dei punti per componente (qualifiche, sprint, gara, bonus). Serviva qualcosa di veloce, leggero, che funzionasse offline.Following MotoGP fantasy with a group of friends requires hourly data updates during race weekends. Official apps are slow, ad-heavy, and don't show per-component point breakdown (qualifying, sprint, race, bonus). Something fast, lightweight, working offline was needed.
Progetti / PWA
BoxBox
PWA per MotoGP 2026 e classifica FantasyGP della lega privata.PWA for MotoGP 2026 and private FantasyGP league standings.
La sfidaThe challenge
La soluzioneThe solution
Ho costruito una PWA in vanilla HTML/CSS/JS con service worker, auto-refresh durante i weekend e notifiche push. Una pipeline Node.js zero-dipendenze gira ogni ora via cron: scarica i dati dall'API fantasy.motogp.com, rinnova automaticamente il cookie di sessione via Playwright/CDP quando scade, calcola il breakdown Q/Sprint/Gara/Bonus per ogni giocatore e fa il deploy su nginx:alpine. Zero manutenzione, zero intervento umano.I built a PWA in vanilla HTML/CSS/JS with service worker, auto-refresh during weekends and push notifications. A zero-dependency Node.js pipeline runs hourly via cron: fetches data from fantasy.motogp.com API, auto-renews session cookies via Playwright/CDP when they expire, computes Q/Sprint/Race/Bonus breakdown for each player and deploys to nginx:alpine. Zero maintenance, zero human intervention.
Tech Stack