11 KiB
Changelog
Tutte le modifiche significative a questo progetto sono documentate in questo file.
Il formato si basa su Keep a Changelog, e questo progetto aderisce al Versionamento Semantico.
[1.0.0] - 2026-02-10
Rilascio iniziale di Segnapunti Anto, un'applicazione web Progressive Web App (PWA) professionale per il tracciamento in tempo reale dei punteggi durante partite di pallavolo.
Funzionalità Principali
Gestione Partite e Punteggi
- Tracciamento punti in tempo reale per entrambe le squadre (casa e ospite)
- Conteggio automatico dei set con supporto per modalità al meglio di 3 o al meglio di 5
- Logica regolamentare completa:
- Set regolari: primo a 25 punti con almeno 2 di vantaggio
- Set decisivo (tie-break): primo a 15 punti con almeno 2 di vantaggio
- Blocco automatico assegnazione punti al raggiungimento della vittoria
- Indicatore visivo del servizio per identificare quale squadra è al servizio
- Cronologia punti con striscia visiva per seguire l'andamento della partita
- Possibilità di incrementare e decrementare punti e set
- Annullamento punti con ripristino automatico del servizio precedente
Formazioni e Rotazioni
- Visualizzazione interattiva della formazione in campo con 6 giocatori per squadra
- Rotazione automatica regolamentare quando la squadra conquista il servizio (cambio palla)
- Configurazione manuale dei numeri di maglia per ogni giocatore
- Sistema di cambi giocatori:
- Dialog dedicato per effettuare i cambi
- Supporto per cambi singoli o multipli
- Tabella IN/OUT con validazione degli input
- Verifica che i numeri di maglia siano numerici
- Scorciatoie da tastiera dedicate per squadra casa e ospite
- Limitazione cambio palla manuale solo a inizio set (0-0) per prevenire errori nella rotazione
Interfaccia Utente e Personalizzazione
- Interfaccia fullscreen touch-friendly ottimizzata per tablet e smartphone
- Layout responsive con media queries per schermi piccoli (<768px)
- Modalità di visualizzazione:
- Punteggio semplice
- Formazioni complete con posizioni giocatori
- Toggle tra le due modalità con scorciatoia da tastiera
- Personalizzazione squadre:
- Configurazione dinamica dei nomi squadre
- Inversione layout orizzontale (scambio posizione casa/ospite)
- Configurazione numeri di maglia giocatori
- Controlli nascondibili: possibilità di nascondere/mostrare barra pulsanti e cronologia
- Stabilizzazione UI: dimensioni fisse per riquadri punteggio per evitare spostamenti durante gli aggiornamenti
Controlli e Accessibilità
- Controlli da tastiera completi con scorciatoie dedicate:
- Squadra Casa:
Ctrl + ↑/↓(punti),Ctrl + →(set),Ctrl + C(cambi) - Squadra Ospite:
Shift + ↑/↓(punti),Shift + →(set),Shift + C(cambi) - Comandi globali:
Ctrl + ←(cambio palla, solo a 0-0)Ctrl + M(configurazione)Ctrl + B(toggle barra pulsanti)Ctrl + F(fullscreen)Ctrl + S(annuncio vocale)Ctrl + Z(switch visualizzazione)
- Squadra Casa:
- Sintesi vocale per annunci punteggio in italiano usando Web Speech API
- Sistema di alert professionale usando Wave UI per notifiche e conferme
Progressive Web App (PWA)
- Installabile come app nativa su smartphone, tablet e desktop
- Funzionamento offline completo grazie ai Service Worker
- Auto-update automatico per ricevere nuovi aggiornamenti senza reinstallazione
- Display fullscreen per massimizzare lo spazio visivo
- Orientamento landscape ottimizzato per utilizzo su tablet
- Orientamento sensor landscape con supporto rotazione 180°
- Icone PWA personalizzate (192x192 e 512x512)
- Prevenzione scroll indesiderato su mobile (overscroll-behavior)
- Supporto 100dvh e position:fixed per layout mobile stabile
- Blocco scroll per evitare ricariche accidentali con swipe-down
Build e Deployment
- Build APK Android tramite Capacitor per distribuzione nativa
- Setup automatico icone Android con script dedicato per multi-densità (ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi)
- Configurazione Capacitor ottimizzata per landscape senza splash screen
- Output unificato in
/dist/androidper build Android - Base path configurabile (
/segnap) per deployment su sottocartelle
Tecnologie e Dipendenze
Stack Tecnologico
- Vue 3.4.38 - Framework JavaScript reattivo
- Vite 5.4.10 - Build tool e dev server veloce
- Wave UI 3.17.0 - Libreria UI components per alert e dialogs
- NoSleep.js 0.12.0 - Prevenzione standby durante le partite
- vite-plugin-pwa 0.20.5 - Plugin per generazione PWA
- Capacitor 6.2.0 - Framework per build app native Android/iOS
Ambiente di Sviluppo
- Node.js 20.x LTS (consigliato v20.2.0)
- npm 9.0.0+ per gestione dipendenze
- NVM support per gestione versioni Node.js
- Hot Module Replacement (HMR) in modalità sviluppo
- Source maps per debugging
- Vue DevTools supportato
Browser Supportati
- Chrome/Chromium 90+ - Supporto completo (consigliato)
- Firefox 88+ - Supporto completo
Build e Comandi
Comandi Disponibili
npm run dev- Server di sviluppo con hot-reload su http://localhost:5173npm run build- Build di produzione ottimizzata in/distnpm run preview- Anteprima locale della build di produzione
Output Build
- File statici ottimizzati e minificati
- Service Worker generato automaticamente
- PWA manifest configurato
- Assets con hash per cache busting
- Permessi automatici per cartella dist in ambiente Docker
Documentazione
- README.md completo con:
- Panoramica funzionalità
- Requisiti di sistema dettagliati
- Istruzioni di installazione e setup con NVM
- Guida ai comandi per sviluppo e build
- Tabella completa shortcuts tastiera
- Configurazione PWA documentata
- Spiegazione logica regolamentare pallavolo
- Browser testati e supportati
- Encoding corretto per caratteri accentati italiani
Miglioramenti Architetturali
- Separazione componenti: HomePage estratta in componente dedicato
- Rimozione codice legacy: eliminati file non utilizzati (HelloWorld.vue)
- Refactoring CSS: file style.css organizzato e ottimizzato
- Gestione servizio migliorata: variabile booleana
servHomeper gestione cambio servizio - Validazione input: controlli su numeri di maglia e cambi giocatori
- Gestione errori: prevenzione incrementi a set concluso senza notifiche spam
Note di Sviluppo
- Orientamento sensor landscape: permette rotazione 180° del dispositivo
- Fix tentati audio mobile: implementati ma richiedono ancora debug (WIP)
- Aggiunto supporto @capacitor-community/text-to-speech per audio nativo
- Implementato fallback Web API su desktop, plugin nativo su mobile
- Correzione lingua da 'it_IT' a 'it-IT'
- Java 17 → 21: aggiornamento per compatibilità plugin TTS
- ImageMagick in Dockerfile: per generazione automatica icone Android
Configurazione
- Base path:
/segnap(configurabile in vite.config.js) - Tema PWA: background
#eee, theme color#ffffff - Display: fullscreen landscape
- Manifest name: app_segnap
- Short name: segnap
Architettura e Funzionamento Interno
Come Funziona l'Applicazione Web
L'applicazione è una Single Page Application (SPA) completamente client-side:
- Server: Serve solo file statici (nessun backend, nessun database)
- Esecuzione: Tutto gira nel browser dell'utente
- Stato: Memorizzato solo nella RAM del browser (si perde al refresh)
- Offline: Funziona completamente offline dopo la prima visita (Service Worker)
Build e Deployment
npm run build
- Vite compila il codice Vue/JavaScript
- Ottimizza e minifica JavaScript e CSS
- Genera Service Worker e manifest PWA
- Output in
/distcon file statici pronti
Deploy: Copia /dist su web server statico (nginx, Apache, Vercel, Netlify). Non serve Node.js, PHP o database sul server.
Funzionamento Runtime
Prima visita:
- Browser scarica index.html dal server
- Carica bundle JavaScript e CSS
- Vue.js inizializza l'applicazione
- Service Worker cachea tutti gli asset
- App pronta (nessuna ulteriore chiamata al server)
Visite successive:
- Service Worker serve i file dalla cache locale
- App si avvia istantaneamente anche senza internet
- In background verifica se esistono aggiornamenti
- Aggiornamenti applicati al prossimo refresh
Gestione Stato
Tutto lo stato della partita vive nella memoria del browser:
data() {
return {
sp: {
punt: { home: 0, guest: 0 },
set: { home: 0, guest: 0 },
servHome: true,
form: { home: ["1","2","3","4","5","6"], guest: ["1","2","3","4","5","6"] }
}
}
}
Limitazioni:
- Refresh della pagina azzera tutto lo stato
- Nessuna sincronizzazione tra dispositivi
- Nessuno storico partite
Vantaggi:
- Privacy totale (nessun dato esce dal dispositivo)
- Velocità massima (nessuna latenza di rete)
- Funzionamento offline completo
Possibili evoluzioni:
- Persistenza con localStorage
- Backend con database per multi-dispositivo
- WebSocket per sincronizzazione real-time
Note Tecniche
Problemi noti:
- Audio mobile: sintesi vocale non funziona su alcuni dispositivi Android
- Persistenza: lo stato si perde al refresh della pagina
- Codice legacy: presenza di file HomePage duplicati
Architettura futura:
- Stato centralizzato con Pinia/Vuex
- Architettura client-server con WebSocket per display remoto
- Persistenza con localStorage o database
- Testing con Vitest e Cypress
Informazioni sul Progetto
Nome progetto: Segnapunti Anto Descrizione: Applicazione web PWA per tracciare i punteggi di partite di pallavolo in tempo reale Sviluppato per: Team Antoniana Licenza: Privata Repository: https://github.com/[username]/segnapunti
Come Leggere Questo Changelog
- Funzionalità Principali: nuove caratteristiche aggiunte all'applicazione
- Tecnologie e Dipendenze: stack tecnologico e versioni utilizzate
- Build e Comandi: istruzioni per compilare ed eseguire il progetto
- Documentazione: miglioramenti alla documentazione utente e sviluppatore
- Miglioramenti Architetturali: refactoring e ottimizzazioni del codice
- Note di Sviluppo: work in progress e problemi noti
Supporto e Contributi
Per segnalare bug o richiedere funzionalità, aprire una issue nel repository del progetto.
Per contribuire al progetto:
- Fork del repository
- Creare un branch per la feature (
git checkout -b feature/nome-feature) - Commit delle modifiche (
git commit -m 'Aggiunge nome-feature') - Push al branch (
git push origin feature/nome-feature) - Aprire una Pull Request
Data primo commit: 2024 Data rilascio 1.0.0: 2026-02-10