Skip to content
← Indietro

My Vote

Votazioni di giurie — webapp HTML5 in P2P

Sperimentale
HTML5 PWA JavaScript WebRTC PeerJS Service Worker localStorage
My Vote

My Vote è una **Progressive Web App** scritta in HTML/CSS/JavaScript senza alcuno step di build, porting fedele dell'app Android originale (ora dismessa). Si apre direttamente nel browser, può essere installata come PWA e funziona offline grazie al service worker. Setup giuria, inserimento performance/concorrente, votazione giurato per giurato (slider + numerico), schermata voto a schermo intero con colore interpolato tra "voto minimo" e "voto massimo" (default rosso → verde), riepilogo performance, classifica finale rivelata un concorrente alla volta dal peggiore al migliore, con gestione del parimerito 1°/2° posto. Storico sessioni completo, template riutilizzabili (single-device e "server"), range/decimali/colori/palette personalizzabili.

Due modalità d'uso. **Single-device**: un solo telefono passa di mano fra i giurati a turno, niente rete. **Multi-device peer-to-peer**: l'host genera un Peer ID + PIN, la pagina pubblica un QR `myvote://join?host=...&pin=...&session=...`. Ogni giurato apre la webapp dal proprio telefono, scansiona il QR (o inserisce manualmente Peer ID e PIN) e si collega come client. I voti viaggiano direttamente fra i browser via **WebRTC DataChannel** (signaling con PeerJS pubblico, lo STUN/TURN è configurabile per i NAT più ostici). Niente piu` passaggio di smartphone, niente sbirciate ai voti altrui. L'host orchestra il flusso (cambio performance, momento del reveal della classifica) e raccoglie i voti sincronizzati. Su iOS/Android la **Wake Lock API** tiene il telefono dell'host sveglio durante la sessione (sostituisce il vecchio ForegroundService Android). Nessun account, nessun tracker, nessuna pubblicità: i dati delle sessioni vivono in `localStorage` sul tuo browser e non escono mai dai partecipanti.

Funzionalità

  • Webapp HTML5/PWA pura: niente build step, niente install obbligatoria
  • Funziona offline (service worker) dopo il primo caricamento
  • Installabile dal browser come app del sistema (manifest + icone)
  • Modalità single-device: un solo telefono passa di mano
  • Modalità multi-device peer-to-peer via WebRTC DataChannel
  • Signaling pubblico PeerJS con STUN/TURN custom configurabile
  • QR code `myvote://join?...` per join istantaneo dei giurati
  • Voti sincronizzati in tempo reale fra browser, niente server di traffico
  • Reveal della classifica orchestrato dall'host
  • Setup giuria con drag-and-drop, range voto e nome sessione
  • Voto a schermo intero con colore interpolato min→max
  • Classifica progressiva (uno per volta dal peggio al meglio) con parimerito
  • Riepilogo performance (totale, media, voti per giurato)
  • Storico sessioni completo con dettaglio e cancellazione
  • Template riutilizzabili (single-device e "server")
  • Wake Lock API: il telefono host non si spegne durante la sessione
  • Range / decimali / colori / palette / tema personalizzabili
  • Sessioni recenti lato client salvate in localStorage (max 5)

Parametrizzazioni

  • Modalità: single-device | multi-device peer-to-peer
  • Range votazione (min / max, default 0–10)
  • Permetti decimali (slider 0.1 vs interi)
  • Colore voto minimo / massimo (interpolazione lineare)
  • Palette: Default (slate) / Sky / Sunset / Ocean / Forest
  • Tema: sistema / chiaro / scuro
  • Connettività P2P avanzata: STUN/TURN custom (default: Google STUN pubblico)
  • Mostra inserimento numerico oltre allo slider
  • Auto-skip se alias giurato == nome concorrente

Pre-requisiti tecnici

  • Browser moderno (Chrome / Edge / Firefox / Safari recenti) con supporto WebRTC + service worker
  • HTTPS in produzione (richiesto da fotocamera e WebRTC)
  • Per modalità multi-device: 2+ dispositivi con accesso a internet (almeno per il signaling iniziale)
  • Permesso fotocamera: solo per scansionare il QR di join (modalità client)
  • Nessun account, nessuna installazione obbligatoria, nessun permesso di sistema speciale
Privacy policy