diff --git a/goals.md b/goals.md new file mode 100644 index 0000000..8e450fe --- /dev/null +++ b/goals.md @@ -0,0 +1,62 @@ +## Core Features + +- **Media Playback:** Support on-demand playback for media files in various formats. + - **Caching & Performance:** + - Use cached segments for seamless seeking and fast resume. + - If another user starts playback with the same parameters, reuse existing cached data to minimize transcoding and bandwidth usage. + - Includes CDN capabilities and P2P federation by Blint. +- **Metadata Management:** + - Automatically identify and fetch metadata from databases like IMDb, TVDB, etc. + - Allow users to edit and correct metadata manually. +- **Transcoding Options:** + - Pre-encode media into multiple formats for reduced compute load (at the expense of storage). + - Or use dynamic, on-the-fly transcoding for flexibility and storage efficiency. +- **Clients** + - Web Client + - Native Clients: Desktop (Windows, Linux, MacOS), Mobile (Android, iOS), TV (Android TV, Apple TV, WebOS, Roku, Someone could create one for Xbox) + - Multiuser Support in clients: You are able to login with multiple users and change between them. +- **Offline Access:** + - Clients can batch-download content for offline playback, respecting user permissions and device limits. +- **Scalability:** + - Support distributed and remote ffmpeg-based transcoding pipelines for high availability and load balancing. +- **User Management:** + - Authentication, profiles, access control, and session tracking. +- **Library & Personalization:** + - Organize and manage libraries by media type (movies, shows, etc.). + - Create and manage playlists and collections. + - Track user history, progress, and play counts. + - Allow users to group media into watchlists, favorites, or custom categories. + - Provide statistics and usage insights (e.g., most watched, time spent, active users). + - Show statics for users about themselves + - Resume from last position across devices. + +## Nice to Have / Later + +- **Sync Play:** Watch movies or shows together in real time across multiple clients. +- **Integration with ARR Stack:** Compatibility with Radarr, Sonarr, Lidarr, and similar automation tools. +- **Parental controls** +- **Jellyfin-Compatible API** and **Plex-Compatible API** +- **Plugin Support:** Extend functionality with custom or third-party plugins. +- **Smart Playback Features:** + - Intro, outro, recap skipper. +- **Recommendations:** Personalized movie and series suggestions based on user history and preferences. +- **External Sync:** Sync watch history, ratings, and metadata with services like Trakt.tv. +- **Subtitle Management:** Automatic subtitle fetching, editing, and syncing with playback. - Probably bazarr is enough for that. +- **Multi-Format Detection:** Detect multiple versions (e.g., 1080p, 4K, HDR) of the same media and show them in a unified view. +- **IPTV / Live TV:** Stream and manage live channels alongside on-demand content. + +## Architecture + +- **Frontend/Backend Separation:** Clearly separated user interface and backend services. +- **Microservice-Ready:** Modular, loosely coupled components that can scale independently. +- **Extensible Protocol Support:** Easily add or replace streaming and media delivery protocols. +- **Telemetry & Observability:** Built-in tracing, logging, and metrics collection. +- **Plugin System:** Enable community and custom extensions. +- **Robust API Design:** Clean, well-documented REST and gRPC interfaces for interoperability. + +## Patrik’s Dreams (Not Necessarily Realistic Goals) + +- On-demand streaming over QUIC. *(WebRTC was suggested but may not fit our use case.)* +- **Segmented Formats:** Support CMAF alongside traditional MPEG-TS for more efficient adaptive streaming. +- **Streaming Standards:** Full compatibility with both HLS and MPEG-DASH. +- **Processing Backends:** Flexible support for ffmpeg, GStreamer, or alternative media frameworks.