Web App

Videodrome.Manager

Online PersonaleDocker Hub

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.

gen 2026primo commit
29endpoint REST
3supporti in tre bit

Piattaforma

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

Catalogo

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

Servizi esterni

TMDB
ricerca e metadati, con il tetto di richieste gestito dal client
Plex
sincronizzazione in coda di sottofondo, abbinamento per identificativo TMDB

Accesso

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

Rilascio

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

Stack

Tecnologie
C#.NETAngularSQLiteTMDB