Calci8
L’app per organizzare il calcetto con gli amici: presenze, squadre equilibrate, formazioni, risultati, classifiche, chat e giochi di gruppo, su www.calci8.it e sul Play Store.

- Ruolo
- Ideazione, design e sviluppo
- Anno
- 2025
- Stack
- Android
- Better Auth
- Claude Code
- Docker
- Fastify
- Node.js
- ONNX Runtime
- Oxlint
- Playwright
- PostgreSQL
- Prisma
- PWA
- Sass
- SolidJS
- Three.js
- TypeScript
- Vite
- WebRTC
- Zod
L’idea
Organizzare la partita del giovedì tra amici vuol dire inseguire chi c’è, fare squadre giuste, decidere chi porta il pallone e ricordarsi chi ha segnato. Calci8 mette tutto in un’unica app pensata per il telefono: ogni gruppo ha le sue partite, la sua rosa, la sua chat e la sua classifica, e ognuno sa sempre cosa deve fare. È online su www.calci8.it e sul Play Store.
Una partita in fasi
Ogni partita attraversa nove fasi, dalle iscrizioni al risultato ufficiale: squadre, capitani, formazioni, riepilogo, partita e voti. Una fase si apre solo quando la precedente è completa; alcune si saltano secondo le regole del gruppo, e il calendario fa il resto da solo: promemoria, chiusura delle iscrizioni, voto dei capitani, ultimo richiamo per le pagelle. Le squadre si bilanciano con un algoritmo sulle caratteristiche dei giocatori, le presenze gestiscono la lista d’attesa e le sostituzioni, e i risultati proposti da un capitano diventano ufficiali solo quando l’altro li conferma.
Il lato social
Chat di gruppo e private con sticker, anche personali, ritagliati dalla foto direttamente nel browser con una rete neurale. Traguardi che sbloccano premi da collezionare (cornici animate per l’avatar, carte stile FIFA anche in 3D con Three.js, maglie e titoli), pronostici, MVP e classifiche senza pari merito con gli spareggi spiegati sotto ogni tabella. E i giochi di gruppo: un quiz in diretta, un gioco di disegno e Mister8, un gioco di deduzione con chat vocale WebRTC da telefono a telefono.
Architettura
SolidJS con Vite e SCSS modules sul web; Fastify, Better Auth e Prisma su PostgreSQL sul server, tutto in TypeScript. Le regole che entrambi devono rispettare (fasi, formati, punteggi, traguardi) stanno in un modulo condiviso. Gli aggiornamenti arrivano in tempo reale con Server-Sent Events, così le app aperte ricaricano solo quello che è cambiato, e le operazioni sulle presenze sono serializzate per partita per evitare doppie promozioni dalla lista d’attesa.
Nativa sul telefono
È una PWA installabile che si apre anche offline grazie al service worker, con notifiche push e un’app Android pubblicata sul Play Store come Trusted Web Activity. Un solo design, con dettagli nativi per piattaforma: transizioni tra pagine, gesto indietro dal bordo su iPhone, ripple su Android, vibrazioni, tema chiaro e scuro e tutti gli effetti 3D con un’alternativa piatta per chi riduce le animazioni.
Sicurezza e privacy
Accesso con passkey, Google o codice via email, verifica in due passaggi e autorizzazioni per gruppo con ruoli diversi. Gli amministratori della piattaforma non vedono chat, statistiche né pagelle. C’è un registro dei trattamenti con la procedura in caso di violazione dei dati, e gli account inutilizzati per due anni vengono avvisati e poi cancellati. Gli admin possono lavorare anche tramite un assistente AI, con un server MCP protetto da OAuth 2.1.
Qualità e rilascio
Oxlint con warning bloccanti, un controllo che ammette negli stili solo i token del tema, centinaia di test sul dominio e sulle API eseguiti su uno schema del database creato da zero, e test end-to-end con Playwright su telefono che coprono anche più giocatori contemporaneamente. Ogni versione ha la sua sezione nel changelog, letta dai giocatori nell’app; la CI verifica anche l’immagine Docker di produzione e il deploy è automatico. Lo sviluppo è fatto con Claude Code, con hook e skill di progetto per i rilasci e i nuovi traguardi.