Panoramica completa

Tutte le funzionalità

Ogni modulo è pensato per il centro padel, dallo staff ai giocatori. Costruito su Laravel 12, MySQL, Sanctum, PWA.

1

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.

🔁 Round Robin
♻️ Round Robin Andata/Ritorno
🏆 Eliminazione Diretta
🎯 Gironi + Playoff
🇺🇸 Americano
🇲🇽 Mexicano
👑 King of the Hill
🥇 Doppia Eliminazione (WIP)

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
2

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
URL params: ?view=standings|bracket|live|next · ?rotate=15s · ?theme=dark|light · ?accent=#00cc66
3

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
4

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:

Partite giocate
Vittorie / Sconfitte
Streak attuale
Miglior streak
Ultime 10 partite
Partner più frequente
Avversario più ostico
% vittorie
5

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
6

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
7

GDPR & Sicurezza

Conformità privacy built-in

  • user:export per right-to-access: JSON completo dei dati utente
  • user:delete per 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
8

Multilingua

IT + EN, switch istantaneo

  • Default italiano, supporto inglese completo
  • Switch lingua via /locale/it o /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.