ACI Sport aveva bisogno
di un nuovo on demand.
La federazione dell'automobilismo sportivo italiano voleva una piattaforma sua per le gare: archivio, dirette, account, gestione. L'ho costruita da zero e da solo — dal database al pulsante play — e oggi è online su web, iPhone e Android.
Il sito, dal vivo
Non una schermata: è acisport.tv davvero, dentro questa pagina. Clicca per usarlo.
Il sito consente di essere incorporato solo dal mio dominio: è una regola di sicurezza che ho impostato io lato ACISPORT. Su telefono al suo posto c'è il collegamento diretto: incorporarlo a scala ridotta renderebbe il testo illeggibile e costringerebbe a caricare un'applicazione intera.
In numeri
Come l'ho lavorato
Ottantamila righe non si scrivono a mano in sei mesi da soli. Ho lavorato in coppia con l'intelligenza artificiale, ma con metodo: ogni decisione tecnica è mia, ogni modifica verificata sui dati reali prima della produzione, e ogni trappola incontrata annotata perché non si ripeta.
Claude Code
Il mio ambiente di lavoro quotidiano, nel terminale e dentro il progetto: scrittura, indagini sui difetti, audit di sicurezza, collaudi.
MCP
Collegamento diretto agli strumenti veri — database, monitoraggio errori, archivio file. Niente copia-incolla fra finestre: si lavora sulla fonte.
Skills
Procedure mie, riutilizzabili: come si pubblica una versione, come si verifica un backup, come si collauda una modifica al database. Il sapere non si perde.
E la base tecnica
Come l'ho costruita
La piattaforma web
Prima ho modellato i contenuti, poi le schermate: un film, una serie con stagioni ed episodi, una diretta col suo palinsesto sono cose diverse che devono convivere nella stessa pagina.
La home si apriva in 3,8 secondi. Il telefono chiedeva al database tutti i contenuti: 5 MB. Ho spostato il lavoro sul server, che ora scrive i dati già pronti dentro la pagina. 600 KB, 1,4 secondi.
Il database
46 tabelle in PostgreSQL, e una regola sopra tutte: il permesso non lo controlla l'app, lo controlla il database. La protezione è sulle righe stesse.
Anche chiamando l'interfaccia a mano, saltando completamente il sito, non esce niente che non ti spetti. Ho chiuso anche la possibilità che un amministratore si promuovesse da solo.
Il lettore video
Riscritto tre volte, una per piattaforma, perché ognuna sbagliava a modo suo: personalizzato sul web, nativo su iPhone, riproduzione diretta su Android. Salti di quindici secondi, immagine nell'immagine, AirPlay, ripresa dal punto in cui avevi smesso.
I video sono protetti da indirizzi firmati che scadono: copiare il link e mandarlo a qualcuno non funziona.
L'app iPhone
Non un sito dentro una cornice: dove il web non arrivava ho scritto codice nativo in Swift — il lettore video, l'accesso con Apple, l'orientamento forzato per le dirette.
Due giorni per una riga: al doppio tocco compariva la lente d'ingrandimento di iOS, anche sullo sfondo. Nessun CSS la fermava, perché non è una scelta della pagina. L'ho spenta da codice nativo — e riaccesa al tocco dei campi di testo, altrimenti la tastiera si apriva su un campo morto.
L'app Android
12.296 modelli di telefono supportati. Il video andava riprodotto in un altro modo, e ho aggiunto anche l'accesso con Apple senza spegnere quello Google.
Cinque tentativi, i primi quattro sbagliati perché trattavo il problema come una questione di tempi. Non lo era: la causa l'ho trovata mettendo una sonda a schermo dentro l'app, perché in versione finale gli errori non arrivano da nessuna parte.
L'infrastruttura
Backup notturni cifrati fuori dal fornitore principale, monitoraggio degli errori tenuto pulito, audit di sicurezza con esiti scritti, sette versioni portate sugli store.
I backup li ho provati davvero: un lavoro notturno "verde" non prova niente, così ho ricostruito la piattaforma da zero partendo dal backup — 1.826 utenti, 3.622 contenuti, 2.085 file. Solo dopo ho potuto dire che funzionavano.
Le app, negli store
Pubblicate e scaricabili da chiunque. Stessa versione su entrambi, pubblicata lo stesso giorno.
- Versione
- 1.2.2
- Categoria
- Sport
- Dimensione
- 18,8 MB
- Richiede
- iOS 15+
- Età
- 4+
- Pubblicata
- 30 ago 2026
Apri su App Store ↗
- Versione
- 1.2.2
- Categoria
- Sport
- Pacchetto
- tv.acisport.app
- Dispositivi
- 12.296 modelli
- Firma
- Play App Signing
- Pubblicata
- 30 ago 2026
Apri su Google Play ↗
Dentro l'app
Le schermate reali, quelle inviate ad Apple e Google per la pubblicazione.
Scorri per vederle tutte →
Cosa so fare
Non un elenco di parole: sono le cose che ho dovuto imparare per portare questo progetto dall'idea agli store.
Frontend
React, TypeScript, Vite. Prestazioni reali su mobile e cura dei dettagli: tocchi, tastiere, scroll, accessibilità.
Backend e dati
PostgreSQL: schema, funzioni, trigger, sicurezza per riga. Funzioni serverless, lavori pianificati, integrazioni.
App native
iOS e Android con Capacitor, plugin nativi in Swift e Kotlin, firma e pubblicazione sugli store.
Video
Streaming HLS, lettori personalizzati, protezione con indirizzi firmati, dirette.
Infrastruttura
Deploy continuo, backup cifrati e verificati, monitoraggio, audit di sicurezza.
Come lavoro
Vado alla causa vera invece di metterci una pezza, e verifico prima di dire che è fatto.
Parliamone
Cerco un ruolo dove costruire prodotti veri. Se quello che hai letto ti somiglia, scrivimi.
- Dove sonoBergamo, Italia
- Emailfederico.geniale2006@gmail.com
- GitHubgithub.com/Federiclock
- LinkedInda completare
- CVVersione completa e PDF
Federico Geniale — 2026 · Scritto a mano, nessun tema comprato.