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.