Tengo il conto di film e serie che possiedo davvero, su qualunque supporto: il DVD sullo scaffale, il Blu-ray, la copia sul server di casa. I metadati arrivano da TMDB, la libreria digitale si sincronizza da sola con Plex.
Perché esiste. La stessa collezione stava in tre posti che non si parlavano, e davanti a un titolo in negozio non sapevo dire se ce l'avevo già, e in che forma. Un foglio di calcolo quella domanda la regge finché le righe sono cento.
I supporti sono bit, non righe. La risposta da manuale sarebbe una tabella di collegamento fra titoli e supporti. Ma i supporti sono tre e non cambiano, e con i bit la domanda "quali ho in Blu-ray" diventa un confronto invece di una giunzione; aggiungerne un quarto costa un bit, non una migrazione.
Plex non risponde in fretta. Sincronizzare una libreria intera dentro la richiesta che l'ha avviata vuol dire lasciare qualcuno a guardare una pagina ferma, quindi il lavoro finisce in coda e l'esito si vede dopo. L'abbinamento è per identificativo TMDB e non per titolo, perché lo stesso film sul disco si chiama in venti modi diversi.
- Backend
- .NET 10, ASP.NET Core, Entity Framework Core
- Frontend
- Angular 21 con Angular Material, mobile-first
- Database
- SQLite, migrazioni applicate all'avvio
- Confezionamento
- un container per API e interfaccia, build a tre stadi, utente non-root
- Modello
- una classe astratta, due sottoclassi per film e serie
- Supporti
- tre bit di un numero: DVD 1, Blu-ray 2, Plex 4
- Viste
- griglia o elenco, filtri per genere, anno e supporto, selezione multipla
- Preferiti
- tenuti nel browser, non sul server
- TMDB
- ricerca e metadati, con il tetto di richieste gestito dal client
- Plex
- sincronizzazione in coda di sottofondo, abbinamento per identificativo TMDB
- Sessione
- cookie con scadenza scorrevole di sette giorni
- CSRF
- token su header a ogni richiesta che scrive
- Limiti di frequenza
- 100 al minuto in generale, 30 sulla sincronizzazione, 5 sul login
- Pipeline
- tre stadi: test bloccanti, build e push, aggiornamento via SSH
- Immagini
- Docker Hub, tag mobile più il numero di build, immutabile
- Verifica
- healthcheck del container, con i log in chiaro se non diventa verde
- Ritorno indietro
- si riporta il tag mobile su una build precedente e si riavvia
- Tecnologie
- C#.NETAngularSQLiteTMDB
Piattaforma
Catalogo
Servizi esterni
Accesso
Rilascio
Stack
