Omni
Una piattaforma di streaming completa, costruita da zero come progetto personale.

La storia
Omni è una piattaforma di streaming che ho costruito da zero per imparare come funziona da cima a fondo. È una demo: il catalogo, le locandine e le schede arrivano dall'API di TMDB, e dietro non ci sono stream veri. Tutto quello che sta intorno al video però è vero: account solo su invito, le tue liste e i preferiti, i tuoi progressi, i consigli, la visione insieme. La parte video esiste solo come prova di concetto, senza contenuti veri.
- commit da gennaio
- 597
- test che passano
- 300
- emivita di un gusto, nei consigli
- 45 days
Un prodotto, non un player
Entri con un codice d'invito. Poi costruisci la tua libreria: una watchlist, i preferiti, liste tue e i progressi su tutto quello che hai iniziato, sincronizzati tra i dispositivi. La home è fatta di righe, e una è fatta per te. Si installa come un'app e ha una pagina offline tutta sua.
Ogni chiamata alle API legge l'utente dalla sessione sul server, mai da quello che manda il browser, così nessuno arriva alla libreria di un altro cambiando un id.
Consigli che dimenticano
La riga fatta per te nasce da un profilo di gusti costruito su quello che guardi davvero. È volutamente semplice, e ha una proprietà a cui tenevo: dimentica. Quello che hai guardato la settimana scorsa conta più di quello che hai guardato la primavera scorsa.
- 1
Coinvolgimento
Ogni titolo nella tua libreria riceve un punteggio per quanto l'hai guardato davvero: un film pesa per quanto sei andato avanti, una serie per quanti episodi hai finito e quanti ne hai provati.
- 2
Tempo
Quel punteggio sbiadisce col tempo, dimezzandosi ogni 45 giorni dall'ultima volta che hai guardato.
- 3
Generi
I punteggi si sommano per genere e vengono normalizzati, così il tuo gusto è un profilo sui generi e non un unico preferito.
- 4
La riga
Il catalogo viene ordinato rispetto a quel profilo per riempire la riga che è tua.
Guardare insieme
Condividi un codice corto e siete nella stessa stanza, a guardare in sincronia dentro l'app. Il server tiene l'orologio e ogni player converge su di lui. Le regole stanno separate dal player e dal socket, come matematica pura, ed è questo che le rende testabili.
Uno scarto piccolo si lascia stare, perché correggerlo si vedrebbe più dello scarto. Uno più grande si chiude con delicatezza, riproducendo un po' più lento o più veloce finché i player si incontrano. Solo una distanza grande fa saltare il player. La stanza viene ricordata per sei ore, così un ricaricamento o un giro sbagliato non ti buttano fuori.
- di scarto è ancora in sincronia
- 0,35 s
- la distanza più grande chiusa cambiando velocità
- 2,5 s
- più lento o più veloce, per recuperare
- 5%
- per cui una stanza viene ricordata
- 6 h
Tutto quello che non avevo mai fatto
Prima di Omni non avevo mai toccato una VPS. I servizi girano in Docker dietro Nginx e Cloudflare, con un firewall davanti. Il server per guardare insieme è uno di questi, su WebSocket. I deploy passano da un unico script che scrive il commit nel controllo di salute di ogni servizio, così una dashboard privata mi dice se il server è aggiornato, accanto a utenti, riproduzioni e sessioni.
È il progetto in cui ho imparato cosa vuol dire mettere qualcosa su internet e tenercelo.
- gen224
- feb47
- mar0
- apr0
- mag7
- giu176
- lug115
- ago16
- set12
Galleria


Vuoi qualcosa del genere?
Posso costruire la stessa cosa per il tuo prodotto.
Raccontami cosa hai in mente. Ricevi una risposta in giornata, con uno scope e dei tempi realistici, non una proposta di vendita.