Full - Mkvcinemaslove
| Sub‑Feature | Functional Requirements | Non‑Functional Requirements | |-------------|------------------------|-----------------------------| | Encrypted preferences sync | JSON payload (playlists, tags, watch‑status) encrypted with AES‑256‑GCM using a user‑derived key (PBKDF2). Sync via HTTPS to user‑owned S3 bucket or internal service. | End‑to‑end encryption; sync latency < 5 min. | | Remote streaming add‑on | Optional bundled server component (Docker image) that reads local MKV files and serves them via HLS/DASH with same UI front‑end. | 1080p streaming at ≤ 5 Mbps on typical home broadband; DRM‑free. |
| Layer | Technology | Reason | |-------|-------------|--------| | UI | React (web), React‑Native (mobile/TV), SwiftUI (iOS/macOS), Jetpack Compose (Android) | Single‑code‑base, native performance via bridges. | | Playback Engine | FFmpeg (v7+), libplacebo (GPU‑accelerated filters), libass (subtitle rendering) | Proven, cross‑platform, supports every MKV feature. | | Metadata Service | Node.js micro‑service (express) → TMDB/OMDB wrappers + SQLite cache | Easy to extend, low latency. | | Sync Service | Go (gRPC) + protobuf for diff‑sync of preferences | High performance, binary‑compact. | | Backend (optional) | Dockerized Nginx + HLS/DASH module + Go streaming API | Scalable self‑hosted streaming. | | Database | SQLite (local), optional PostgreSQL (cloud sync) | Light‑weight for desktop; robust for cloud. | | CI/CD | GitHub Actions (build + unit tests) → Fastlane (mobile) → Docker Hub (server) | Automated pipeline. | | Telemetry | RudderStack (self‑hosted) → GDPR‑compliant storage | Opt‑in only. | mkvcinemaslove full
| Sub‑Feature | Functional Requirements | Non‑Functional Requirements | |-------------|------------------------|-----------------------------| | Cinema‑mode UI | Full‑screen overlay with auto‑hide after 3 s. Central “Now Playing” bar shows poster, title, progress. | < 30 ms UI animation lag. | | Remote & Touch support | Map common remote keys (play/pause, left/right, up/down, menu) to actions. Touch gestures: double‑tap → fullscreen toggle, pinch‑zoom for subtitles. | Consistent behaviour across Android TV, Apple TV, Roku. | | Accessibility | All UI elements reachable via keyboard/tab, ARIA labels for screen‑readers, high‑contrast mode toggle. | WCAG‑2.1 AA compliance; user testing score ≥ 4.5/5. | kick. | Latency <
| Sub‑Feature | Functional Requirements | Non‑Functional Requirements | |-------------|------------------------|-----------------------------| | Automatic metadata fetch | When a new MKV is added, compute a fuzzy title hash → query TMDB/OMDB APIs. Cache results locally (SQLite). Allow manual override. | 95 % match accuracy on 10 k‑movie test set. API‑rate‑limit handling with exponential back‑off. | | Bulk import & watch folder | User selects a root folder; daemon watches for file creation/deletion. Supports network shares (SMB, NFS). | Indexing speed ≥ 2 GB/min on SSD. | | Smart collections | UI for creating dynamic filters (e.g., “All 4K HDR movies released after 2015”). | Real‑time update when underlying items change. | | Duplicate detection | Compute SHA‑256 hash of first/last 10 MB + duration; present UI for merge/keep/both. | No false‑positive duplicate > 0.5 % on a 50 k‑movie dataset. | file size <
| Platform | UI Tech | Playback Integration | Distribution | |----------|---------|----------------------|--------------| | Windows 10/11 (x64) | React + Electron | FFmpeg + DXVA2/NVDEC | MS Store + exe installer | | macOS 12+ (Apple Silicon + Intel) | React + Electron | FFmpeg + VideoToolbox | Mac App Store + dmg | | Linux (Ubuntu 22.04+, Fedora) | React + Electron | FFmpeg + VA‑API/QSV | Snap/Flatpak/AppImage | | Android TV / Fire TV | React‑Native | FFmpeg (NDK) + MediaCodec | Google Play / Amazon Store | | iOS / iPadOS (iOS 15+) | SwiftUI | FFmpeg (static build) + VideoToolbox | App Store | | Web (optional lite) | React (SPA) | Media Source Extensions (MSE) + WebCodecs (future) | SaaS (no‑install) |
| Sub‑Feature | Functional Requirements | Non‑Functional Requirements | |-------------|------------------------|-----------------------------| | Private watch‑party | Host creates a session (unique URL + passcode). Participants join via app; playback sync via WebRTC data channel. Host can mute, kick. | Latency < 200 ms between host and participants for 1080p streams. | | Export clip/GIF | Select start/end timestamps (frame‑accurate). Encode to MP4 (max 30 s) or GIF (max 5 s). Add optional watermark with user name. | Export time ≤ 2 × clip length; file size < 5 MB for 10 s 1080p MP4. | | Scrobble integration | OAuth flow for Trakt/Letterboxd; push “watched” status after 90 % of movie finished. | No duplicate scrobbles; error handling for revoked tokens. |




