Files
videoteca/docs/01-vision-requisiti.md

4.7 KiB

Visione e requisiti

Visione

Archivio personale di filmati, navigabile per categoria → sottocategoria, riproducibile nel browser, che occupa meno spazio possibile senza attese di "decompressione" e ricorda dove ti sei fermato.

Correzione del presupposto iniziale

L'idea originale era: salvare i filmati in archivio (zip/tar.gz), decomprimerli all'apertura, ricomprimerli alla chiusura. Non adottata: gli .mp4 (H.264/H.265) sono già compressi e un archivio generico non li riduce in modo apprezzabile, mentre costa tempo e spazio temporaneo a ogni apertura. Il risparmio reale si ottiene ricodificando il video una sola volta. Dettagli: ADR 0002. Conseguenza: non esiste il ciclo "decomprimi → guarda → ricomprimi"; il file è sempre pronto alla riproduzione.

Requisiti funzionali

ID Requisito Priorità
F-01 Gestire categorie con sottocategorie (es. A → A1, A2) Must
F-02 Caricare un filmato assegnandolo a una categoria foglia (come un episodio in una stagione; ADR 0010) Must
F-03 Dopo il caricamento il filmato viene ricodificato per ridurne il peso; stato visibile (in elaborazione / pronto / errore) Must
F-04 Navigare: scegli categoria → sottocategoria → filmato Must
F-05 Riprodurre nel browser con play/pausa, seek avanti/indietro (±10 s e barra) Must
F-06 Alla pausa/chiusura, la posizione è salvata; alla riapertura si riparte da lì Must
F-07 Segnare come "visto" un filmato finito (la posizione riparte da 0) Should
F-08 Passare al filmato precedente/successivo della stessa categoria Must (insieme ai ±10 s di F-05)
F-09 Rinominare/spostare/eliminare filmati e categorie Should
F-10 Miniatura per filmato Could
F-11 Aggiungere, modificare ed eliminare filmati, categorie e sottocategorie (F-01, F-02, F-09) richiede un accesso (login); senza accesso non si può modificare nulla. Esiste un solo account admin e solo lui ha questo accesso; è il superuser PocketBase e vale già dall'MVP (ADR 0013) Must
F-12 Per guardare i filmati serve un account (login). Gli utenti con account possono solo guardare: non possono aggiungere, modificare né eliminare nulla (per ora) Must
F-14 Pannello admin intuitivo, accessibile solo all'admin: caricare filmati con stato di elaborazione visibile, gestire l'albero categorie/stagioni, gestire gli account utenti (creare con password iniziale, reimpostare la password dimenticata, eliminare), rinominare/spostare/eliminare con conferma (ADR 0012) Must
F-15 Ogni utente ha un profilo con impostazioni dove può cambiare la propria password; la password iniziale la decide l'admin alla creazione dell'account. Se la dimentica, la reimposta l'admin (nessun recupero via email, N-01 costo zero). Un utente può modificare solo il proprio profilo Must

Requisiti non funzionali

ID Requisito
N-01 L'app gira su un Raspberry Pi nella rete di casa; telefoni, tablet e PC la raggiungono dall'indirizzo IP del Raspberry (decisione 2026-10-11). Nessun accesso da Internet; nessun servizio a pagamento
N-02 Seek fluido anche su file grandi: nessuna riproduzione "tutto in memoria"
N-03 Un upload interrotto o una transcodifica fallita non lasciano stato incoerente né file orfani
N-04 I dati vivono in una sola cartella (pb_data/) per un backup semplice
N-05 Ogni scelta tecnica rilevante è tracciata in un ADR
N-06 Gli originali sono conservati durante l'MVP, finché la qualità non è validata
N-07 Compatibilità ampia (decisione 2026-10-11): deve funzionare in modo affidabile su Safari iOS, Chrome Android e Windows (Chrome/Edge), oltre agli altri browser desktop. Implicazioni: interfaccia adatta al touch (pulsanti ±10 s e precedente/successivo grandi, niente scorciatoie solo da tastiera), layout responsive, riproduzione in pagina, file video riproducibili da tutti i browser (vedi ADR 0003)
N-08 Qualità: ricodifica "visivamente identica" (CRF prudente, taratura in M0 con confronto visivo); non lossless. Si parte con pochi filmati e poi si allarga
N-09 Dimensionamento iniziale (decisione 2026-10-11): circa 40 filmati da 2-3 GB ciascuno, cioè circa 80-120 GB di originali; SSD da 1 TB. Il risparmio reale e i tempi di ricodifica si misurano in M0
N-10 Il backend e la ricodifica devono poter girare su Raspberry Pi (Linux ARM). Modello, RAM e disco: Q-14

Fuori scopo (per ora)

Permessi utente oltre a "guardare" (F-12) e "amministrare" (F-11), accesso da Internet, streaming adattivo (HLS/DASH), sottotitoli, trascodifica al volo per dispositivi diversi.