Files

25 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

# Roadmap
MVP = M0-M4 con l'admin che usa la dashboard standard di PocketBase; il pannello admin proprio (M3b) segue subito dopo. Regola per ogni fase: **document-first** (doc/ADR aggiornati prima del codice) e, a fine fase, aggiornamento di `PROJECT_STATE.md` e `CHANGELOG.md`.
| Fase | Obiettivo | Deliverable | Criterio di completamento |
|---|---|---|---|
| **M0 — Spike e fondamenta** | Chiudere i rischi tecnici prima di costruire | Repo con docs; PocketBase (build ARM da verificare) e ffmpeg avviati sul Raspberry reale; 3 file campione provati (tra i 2 e i 3 GB, N-09) su Safari iOS, Chrome Android e Windows reali (N-07) | Vedi sotto |
| **M1 — Dati** | Schema e gestione categorie | Migrazioni in `pb_migrations/`; collezioni `categories`, `videos`, `progress`; validazione cicli e regola foglie ([ADR 0010](adr/0010-filmati-solo-nelle-foglie.md)); creazione del superuser (da documentazione PocketBase), collection utenti e rules (ogni utente modifica solo il proprio profilo, F-15) ([ADR 0013](adr/0013-accesso-su-rete-di-casa.md)) | Categorie creabili/spostabili da dashboard; cicli rifiutati |
| **M2 — Ingest** | Upload → ricodifica → pronto | Pipeline secondo ADR 0004 | Upload di un file di test arriva a `ready`; errori finiscono in `error`; riavvio riconciliato |
| **M3 — Navigazione UI** | Categoria → sottocategoria → lista filmati | `pb_public/` | Login utente; pagina profilo con cambio password (F-15); navigazione completa, stati di caricamento/vuoto/errore |
| **M3b — Pannello admin** | Gestione da interfaccia | Pagina admin in `pb_public/` con login superuser: upload con stato, albero categorie, gestione account utenti (creazione, reimpostazione password, eliminazione), modifica/sposta/elimina ([ADR 0012](adr/0012-pannello-admin-proprio.md)) | L'admin carica un filmato, ne vede lo stato fino a `ready`, crea una stagione, sposta e elimina con conferma; un utente normale non accede né scrive |
| **M4 — Player e ripresa** | Riproduzione con ripresa | Player, salvataggio posizione, "visto" | Pausa → chiudi → riapri riparte dallo stesso punto (±2 s); seek corretto su file grande; precedente/successivo; un utente non legge né scrive il progresso di un altro ([ADR 0008](adr/0008-progresso-per-utente.md)) |
| **M5 — Qualità** | Robustezza | Checklist casi limite (docs/02) verificata; backup/ripristino provato; lint Markdown e link check | Tutti i casi della checklist hanno esito documentato |
| **M6 — Esposizione in rete** *(futura)* | Uso da Internet (la rete di casa è già nell'MVP, N-01) | HTTPS e revisione rules (l'auth c'è già dall'MVP, ADR 0013) | Nuovo ADR sulla sicurezza prima di iniziare |
## M0 in dettaglio (spike)
1. Scaricare PocketBase (versione fissata) dal sito ufficiale e avviarlo in locale.
2. Su 3 file reali (piccolo, medio, grande): ricodificare con ffmpeg in AV1 e HEVC; **misurare** peso prima/dopo e tempo.
3. Provarli nei browser che usi davvero (riproduzione, seek, riapertura) → decide [ADR 0003](adr/0003-codec-av1-vs-hevc.md).
4. Misurare cosa fa zip/tar.gz sugli stessi file → conferma [ADR 0002](adr/0002-ricodifica-invece-di-archivio.md).
5. Verificare: limite upload per file grandi; seek con `Range` via `/api/files/`; esecuzione non bloccante di ffmpeg da hook → decide [ADR 0004](adr/0004-pipeline-di-ingest.md).
6. Aggiornare ADR, rischi e `PROJECT_STATE.md` con i risultati misurati.
**Fatto quando**: ADR 0003 e 0004 sono "Accettato" con numeri a supporto, e R-01…R-03 sono chiusi o ridimensionati.