mirror of
https://github.com/myronblair/kino-app
synced 2026-06-30 17:50:16 -05:00
auto-commit for 197fcaed-6530-4cd7-ab0c-0158ea90d5dd
This commit is contained in:
+46
-27
@@ -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, `<video>` auto-uses HLS when ready (via hls.js fallback for non-Safari)
|
||||
- **Admin Settings page** for TMDB + Radarr config with masked inputs + connection test
|
||||
|
||||
## Backlog (P1)
|
||||
- TMDB metadata auto-fill on upload (user must supply API key)
|
||||
- Multiple user profiles ("Who's Watching" Netflix-style)
|
||||
- Subtitle (.srt/.vtt) upload + display
|
||||
- Transcoding (HLS) for low-bandwidth playback
|
||||
- Two-factor auth for admin
|
||||
- Sonarr (TV shows): requires episodes/seasons data model — significant addition
|
||||
- Subtitle search via OpenSubtitles API
|
||||
- Multi-bitrate HLS (current is single-rate stream-copy)
|
||||
- Trakt.tv sync (mark watched, ratings)
|
||||
- DLNA/Chromecast casting
|
||||
|
||||
## Backlog (P2)
|
||||
- LDAP/OIDC SSO
|
||||
- Sonarr/Radarr integration (for users to legally manage their owned libraries)
|
||||
- LDAP/OIDC SSO for household-wide auth
|
||||
- Mobile native wrapper (Capacitor)
|
||||
- DLNA/Chromecast casting
|
||||
- Per-user parental controls
|
||||
- Admin user management UI (currently only seed admin)
|
||||
- Live transcoding (subtitle burn-in, codec conversion for old TVs)
|
||||
- Watch parties (synchronized playback)
|
||||
|
||||
## External keys/services needed for full functionality
|
||||
- **TMDB**: free API key from https://www.themoviedb.org/settings/api → paste in Admin → Settings
|
||||
- **Radarr**: existing Radarr install on Proxmox; URL + API key (Settings → General in Radarr) → paste in Admin → Settings. Radarr's media path must be readable by Kino on disk.
|
||||
|
||||
## Test credentials
|
||||
See `/app/memory/test_credentials.md`
|
||||
|
||||
## Test reports
|
||||
- `/app/test_reports/iteration_1.json` — Phase 1 (21/21 backend, 9/9 UI)
|
||||
- `/app/test_reports/iteration_2.json` — Phase 2 (42/42 backend, all UI flows pass)
|
||||
|
||||
Reference in New Issue
Block a user