ConceptDocs/goals.md
Patrik Fodor f8173aec61 add initial goals documentation
Signed-off-by: Patrik Fodor <fodor.patrik.2000@gmail.com>
2025-10-14 21:12:06 +02:00

3.7 KiB

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.