Files

28 lines
1.8 KiB
Markdown
Raw Permalink Normal View History

# 0001 — Backend: PocketBase
- **Stato**: Accettato (con riserve, vedi R-01)
- **Data**: 2026-10-11
## Contesto
Serve un backend locale, gratuito, con DB, API, storage file e Range. Obiettivo: poca infrastruttura e poco codice.
## Decisione
PocketBase (eseguibile singolo, SQLite embedded, REST, dashboard admin, storage file, hook JS, serve anche `pb_public/`).
## Alternative
- Python + FastAPI + SQLite: più controllo e ffmpeg più naturale, ma più codice da scrivere/mantenere (API, upload, Range, migrazioni).
- Node + Express: idem.
## Conseguenze
- ✔ Un solo binario (~12 MB), nessuna dipendenza, admin UI gratuita per gestire categorie in M1.
- ✔ File serviti con Range: `Serve` usa `http.ServeContent`.
- ✔ Migrazioni in `pb_migrations/` committabili.
- ⚠ **Pre-1.0**: la documentazione ufficiale dice che la retrocompatibilità non è garantita e che non è raccomandato per applicazioni di produzione critiche senza leggere il changelog e applicare migrazioni manuali. Per un uso locale personale è accettabile; **fissare la versione** (oggi v0.40.5) e aggiornare in modo consapevole.
- ⚠ Limite file: i campi file hanno max ~5 MB di default; va alzato nelle opzioni del campo (verificare in M0 anche limiti di body/upload per file grandi).
- ⚠ Il motore JS dei hook (goja) è ES5/ES6 parziale, senza `setTimeout`, né concorrenza dentro un handler: la transcodifica non va eseguita in modo bloccante in un handler → vedi [ADR 0004](0004-pipeline-di-ingest.md).
## Fonti (consultate 2026-10-11)
- https://pocketbase.io/docs/ (versione, avviso pre-1.0, directory)
- https://pocketbase.io/docs/files-handling/ (limite ~5 MB, storage locale/S3)
- https://pocketbase.io/docs/js-overview/ (goja, `$os`, limiti del motore)
- https://github.com/pocketbase/pocketbase/blob/master/tools/filesystem/filesystem.go (`Serve` → `http.ServeContent`)