Tutte le funzionalità
Ogni modulo è pensato per il centro padel, dallo staff ai giocatori. Costruito su Laravel 12, MySQL, Sanctum, PWA.
Tornei & Campionati
Strategy pattern + scoring configurabile
Otto formati torneo supportati, selezionabili al momento della creazione. Ogni formato gestisce generazione partite, avanzamento bracket, calcolo classifica in autonomia via Strategy pattern.
Algoritmi di punteggio: ADP Standard, Tennis Classic, Points Only, Americano Points.
- Audit trail completo: ogni modifica punteggio salva previous/new results + source (admin/player)
- Bracket avanzamento automatico via Observer quando lo stato passa a completed
- Versioning per polling delta sulle classifiche
Pagina TV Live
Kiosk display per i monitor del centro
Pagina pubblica full-screen accessibile su /tv/{slug}, attivabile per torneo con flag tv_mode_enabled.
- Carousel rotante su Standings, Live, Bracket, Prossime (rotazione configurabile)
- Polling AJAX 5s con delta via ?since=version — payload ~30 byte quando nulla è cambiato
- ETag + 304 per risparmiare banda
- Pausa polling quando il tab è nascosto
- Tema dark/light, accent color personalizzabile via querystring
?view=standings|bracket|live|next · ?rotate=15s · ?theme=dark|light · ?accent=#00cc66
Chat integrate
Partita, torneo, DM — tutto via polling
Chat partita auto
Creata automaticamente quando viene generata una partita. Partecipanti = utenti collegati ai player delle 2 squadre.
Chat torneo
Una per campionato, sincronizzata quando cambiano le squadre iscritte.
Direct Message 1-1
Apri conversazione diretta con un altro utente. Idempotente: riusa la chat esistente.
Blocco & segnalazioni
Blocco bilaterale sulle DM. Segnalazione messaggi con 4 categorie (spam, harassment, inappropriate, other).
- Polling 2s tab attivo, 10s tab nascosto, cursor-based via ?since=id
- Optimistic UI sull'invio messaggio
- Unread count globale + mark-read automatico
- Pin messaggi per admin chat
- Typing indicator con throttle aggressivo + cutoff 5s
Sistema ELO
Livello dinamico stile Playtomic
Ogni giocatore ha un livello dinamico sulla scala 1.0-7.0 che si aggiorna automaticamente dopo ogni partita completata.
- ELO team-based per padel doppio: rating team = media dei due player
- K factor = 0.15 (max swing per partita)
- Storico evoluzione (level_history) per ogni partita
Statistiche calcolate per giocatore:
Community
Profili social stile Playtomic
- Profilo pubblico a
/u/{username} - Avatar upload con resize 256x256 via intervention/image
- Bio, home club, preferenze padel (mano dominante, posizione, stile)
- Follow asimmetrico (come Twitter/Playtomic)
- Kudos post-partita: Like, MVP, Nice Shot
- Privacy per sezione configurabile pubblico o privato
App Mobile PWA
Installabile, offline-ready
- Manifest dinamico con icone 192/512/maskable
- Service worker custom a
/sw.js - Cache-first su asset statici Vite e icone
- Network-first con fallback a
/offline - Auth via Sanctum: cookie su browser, token su app mobile
- Installabile come app standalone su iOS, Android, desktop
GDPR & Sicurezza
Conformità privacy built-in
user:exportper right-to-access: JSON completo dei dati utenteuser:deleteper right-to-erasure: anonimizzazione + delete- Password rules production: min 10 chars, mixed case, numbers, check contro HIBP
- Rate limiters nominali: api 60/min, auth 10/min IP, polling 180/min, write 60/min
- CSRF protection, XSS escape via Blade by default
Multilingua
IT + EN, switch istantaneo
- Default italiano, supporto inglese completo
- Switch lingua via
/locale/ito/locale/en - Persistenza lingua sull'utente (DB) o sulla session per guest
- Middleware SetLocale resolve da user → session → Accept-Language → fallback
Vedi Amici del Padel in azione
Registrati e prova tutte le funzionalità. Se gestisci un centro padel, possiamo configurare una demo personalizzata.