From 1193b7456995b4b914f64424251ce8d1e490f8f3 Mon Sep 17 00:00:00 2001 From: emergent-agent-e1 Date: Wed, 29 Apr 2026 16:02:36 +0000 Subject: [PATCH] auto-commit for 197fcaed-6530-4cd7-ab0c-0158ea90d5dd --- memory/PRD.md | 73 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 27 deletions(-) diff --git a/memory/PRD.md b/memory/PRD.md index f123094..bd45a4c 100644 --- a/memory/PRD.md +++ b/memory/PRD.md @@ -7,44 +7,63 @@ - Auto-download of copyrighted movies is **not implemented** (illegal). - Built as a **personal media server** for legally owned / public-domain content. - "Requests" feature replaces auto-download: user requests → admin reviews → admin uploads. +- Confirmed: **internal-network deployment only** (Proxmox), not public internet. ## Personas -- **Admin** — manages library, uploads movies, fulfils user requests. -- **Member** — browses, watches, builds watchlist, submits requests. +- **Admin** — manages library, uploads movies, fulfils user requests, configures integrations. +- **Member** — browses, watches, builds watchlist (per profile), submits requests. +- **Kids** — separate profile with parental rating cap (e.g. PG max). ## Tech stack -- Backend: FastAPI + Motor (MongoDB), JWT (bcrypt + python-jose) -- Frontend: React 19 + react-router 7 + Tailwind + shadcn/ui + lucide-react + sonner -- Storage: local filesystem with `MEDIA_ROOT` env (Proxmox-friendly) -- Streaming: FastAPI StreamingResponse with HTTP Range support +- Backend: FastAPI + Motor (MongoDB), JWT (bcrypt + python-jose), ffmpeg (HLS transcoding) +- Frontend: React 19 + react-router 7 + Tailwind + shadcn/ui + lucide-react + sonner + hls.js +- Storage: local filesystem with `MEDIA_ROOT` env (Proxmox-friendly: mount NAS path) +- External: TMDB (metadata), Radarr (library import) — both optional, configured by admin -## Implemented (2026-04-29) -- JWT auth: register/login/me, admin role, admin seeding on startup -- Movies CRUD (admin) + listing/filter/search (public auth) -- Multipart upload for video files (admin) -- Range-aware streaming endpoint `/api/stream/{id}` with `?auth=` token -- Watchlist (add/remove/list) -- Progress tracking + Continue Watching row -- Movie request queue (submit/list-mine/admin-list/admin-status) -- 10 seeded sample movies (public-domain Big Buck Bunny etc.) -- Cinematic dark UI (Fraunces serif + Geist sans, blood-orange #D9381E accent) +## Implemented + +### Phase 1 (2026-04-29) +- JWT auth, admin role, admin seeding +- Movies CRUD, multipart upload +- Range-aware streaming endpoint +- Watchlist + Continue Watching +- Movie request queue +- 10 seeded public-domain movies +- Cinematic UI (Fraunces + Geist, blood-orange #D9381E) - Pages: Login, Register, Browse, MyList, Search, Player, Requests, Admin, AdminUpload -- Featured movie hero banner (admin can star any movie as featured) -- Proxmox + Caddy deployment instructions in README +- Proxmox + Caddy deployment guide + +### Phase 2 (2026-04-29) +- **Multi-profile** ("Who's Watching"): up to 5 per account, avatar color, kids flag, max_rating cap +- **Parental controls**: profile-scoped movie filtering (G/PG/PG-13/R/NR ladder) +- **Profile-scoped** watchlist + progress (continue watching) +- **TMDB metadata auto-fill** on upload (admin configures key in Settings) +- **Subtitles**: upload .srt or .vtt; auto-convert SRT→WEBVTT; in-player track selection +- **Radarr import**: pull library list, multi-select, bulk import as Movie entries +- **HLS transcoding** via ffmpeg: admin-triggered, background task, status tracking, `