180 lines
7.6 KiB
Markdown
180 lines
7.6 KiB
Markdown
# StreamFlow - Premium Cinema Experience 🎬
|
||
|
||
[](https://hub.docker.com/r/vndangkhoa/streamflix)
|
||
[](https://github.com/vndangkhoa/Streamflow)
|
||
[](https://github.com/vndangkhoa/Streamflow/releases)
|
||
|
||
StreamFlow is a high-fidelity movie streaming application designed for NAS enthusiasts and home cinema lovers. It combines a premium **Apple TV+ inspired aesthetic** with a lightweight, high-performance backend, now consolidated into a **single Docker image** for effortless deployment.
|
||
|
||
## 📋 Latest Release: v1.3.1
|
||
|
||
**What's New in v1.3.1:**
|
||
- 📱 **Mobile Background Playback:** Added support for background playback and wake lock to prevent screen sleep.
|
||
- 🚀 **Performance:** General stability improvements and version sync across platforms.
|
||
|
||
**Previous (v1.3.0):**
|
||
- 🔍 **Search Experience Overhaul:** Fixed UI rendering, added keyboard/voice support, and verified backend connectivity.
|
||
- 🟥 **Solid Red Branding:** Pure solid red adaptive icon and banner for a cleaner TV home screen look.
|
||
- ⚡ **Navigation Polish:** Smarter focus management and sidebar transitions.
|
||
- 🐞 **Stability:** Fixed compilation errors and optimized network requests.
|
||
|
||
**Previous (v1.2.0):**
|
||
- 🎬 **Animated Splash Screen:** Premium logo animation on app launch
|
||
- 📺 **Continue Watching:** Watch history persisted across sessions
|
||
- ⭐ **My List:** Save favorite movies for quick access
|
||
- ⚡ **Faster Loading:** Optimized splash screen (1.2s) and lazy loading
|
||
- 🐛 **Bug Fixes:** Fixed video playback, improved stability
|
||
- <20> **Bug Fixes:** Fixed video playback, improved stability
|
||
|
||
**Previous (v1.1.0):**
|
||
- 📺 Native Android TV App with Leanback UI
|
||
- 🎮 ExoPlayer Integration for HLS streaming
|
||
- 🔍 Voice Search support
|
||
|
||
---
|
||
|
||
|
||
## 📺 Native Android TV App
|
||
|
||
A dedicated native Android TV app built with Google's **Leanback** library for the optimal TV experience.
|
||
|
||
### Features
|
||
| Feature | Description |
|
||
|---------|-------------|
|
||
| **Leanback UI** | Netflix-style horizontal rows with focus animations |
|
||
| **ExoPlayer** | High-quality HLS video streaming with buffering |
|
||
| **Voice Search** | Native Google voice search integration |
|
||
| **D-Pad Navigation** | Seamless remote control navigation |
|
||
| **Curated Home** | Personalized sections (Top Rated, New, Genres) |
|
||
| **Splash Screen** | Animated logo with premium launch experience |
|
||
| **Continue Watching** | Resume where you left off with watch history |
|
||
| **My List** | Save favorite movies for quick access |
|
||
|
||
### Downloads
|
||
- **[Download TV APK (v1.3.1)](https://github.com/vndangkhoa/Streamflow/releases/download/v1.3.1/StreamFlix-TV.apk)** - Direct Download
|
||
- **[Download Mobile APK (v1.3.1)](https://github.com/vndangkhoa/Streamflow/releases/download/v1.3.1/StreamFlix.apk)** - Direct Download
|
||
- **[All Releases](https://github.com/vndangkhoa/Streamflow/releases/tag/v1.3.1)** - View Release Page
|
||
|
||
### Installation
|
||
|
||
```bash
|
||
# Install via ADB
|
||
adb install StreamFlix-TV.apk
|
||
```
|
||
|
||
### Project Structure
|
||
```
|
||
android-tv/
|
||
├── app/src/main/java/com/streamflix/tv/
|
||
│ ├── data/
|
||
│ │ ├── api/ # Retrofit API client with HMAC auth
|
||
│ │ ├── model/ # Movie, ApiResponse models
|
||
│ │ ├── WatchHistoryManager.kt # Persistent watch history
|
||
│ │ └── MyListManager.kt # User favorites
|
||
│ └── ui/
|
||
│ ├── browse/ # Main browse screen (Leanback)
|
||
│ ├── details/ # Movie details with actions
|
||
│ ├── playback/ # ExoPlayer video playback
|
||
│ └── search/ # Voice + text search
|
||
├── SplashActivity.kt # Animated splash screen
|
||
└── gradle/
|
||
```
|
||
|
||
|
||
---
|
||
|
||
## 💎 Premium Features
|
||
|
||
### 🧊 Liquid Glass UI
|
||
- **Immersive Design**: Deep frosted-glass effects (40px+ blur) with Apple-style deep occlusion.
|
||
- **Micro-interactions**: 1px translucent borders, 3D card scaling, and smooth state transitions.
|
||
- **Cinematic Hero**: Dynamic full-screen backdrops that change based on featured content.
|
||
- **Dark Mode Perfected**: A custom OLED-friendly palette optimized for theater viewing.
|
||
|
||
### ⚡ Turbo-Charged Performance
|
||
- **Parallel Crawler**: Fetches category data with concurrent workers, reducing initial load times by up to 60%.
|
||
- **Multi-Layer Caching**: Advanced Redis-backed caching for movie metadata, catalog results, and stream extraction.
|
||
- **Eager Prefetching**: Intelligent frontend prefetching of thumbnails and metadata before you even scroll to them.
|
||
- **Instant Recovery**: Session-based client caching for near-instant navigation back to Home and Cinema views.
|
||
|
||
### 📱 Native PWA Experience
|
||
- **Installable**: Full Progressive Web App (PWA) support. Add to Home Screen on iOS and Android.
|
||
- **Native Feel**: Runs in standalone mode without browser chrome for a truly native app experience.
|
||
- **Custom Icons**: High-resolution 'Liquid Glass' app icons for your home screen.
|
||
|
||
### 🐳 Unified NAS Architecture
|
||
- **Single-Container Deployment**: Backend and Frontend are bundled into one efficient image.
|
||
- **Low Overhead**: Zero-bypass streaming shifts heavy video load 100% to the client side.
|
||
- **NAS-Optimized**: Designed to run smoothly on Synology, QNAP, and Unraid (linux/amd64).
|
||
|
||
### 🍅 Rich Metadata
|
||
- **Rotten Tomatoes Ratings**: Real-time integration of "Fresh" and "Rotten" score badges.
|
||
- **Watch History**: Cross-device history and "My List" bookmarks saved to Redis.
|
||
- **Robust Player**: Hardened video overlay with instant context-aware closure (Escape key, Back button, and X support).
|
||
|
||
---
|
||
|
||
## 🚀 One-Step Deployment
|
||
|
||
Copy this into your `docker-compose.yml` and run `docker-compose up -d`:
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
|
||
services:
|
||
# StreamFlow Unified (Backend + Frontend)
|
||
app:
|
||
image: vndangkhoa/streamflix:1.1.0
|
||
platform: linux/amd64
|
||
ports:
|
||
- "3478:8000"
|
||
environment:
|
||
- REDIS_URL=redis://redis:6379
|
||
- DATABASE_URL=sqlite:///./app/data/streamflow.db
|
||
- PYTHONUNBUFFERED=1
|
||
volumes:
|
||
- ./data:/app/data
|
||
depends_on:
|
||
redis:
|
||
condition: service_healthy
|
||
restart: unless-stopped
|
||
|
||
# Redis Cache & History
|
||
redis:
|
||
image: redis:7-alpine
|
||
platform: linux/amd64
|
||
ports:
|
||
- "6379:6379"
|
||
volumes:
|
||
- ./redis-data:/data
|
||
restart: unless-stopped
|
||
command: redis-server --appendonly yes
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 5s
|
||
timeout: 3s
|
||
retries: 5
|
||
```
|
||
|
||
### 🏁 Accessing the App
|
||
- **UI & API**: [http://localhost:3478](http://localhost:3478)
|
||
- **API Docs**: [http://localhost:3478/docs](http://localhost:3478/docs)
|
||
|
||
---
|
||
|
||
## 🛠 Tech Stack
|
||
- **Backend Core**: FastAPI (Python 3.11), SQLAlchemy, Redis
|
||
- **Scraping Engine**: Playwright (Headless Chromium) & `aiohttp` for resilient data extraction
|
||
- **Frontend Engine**: Vanilla JS (ES6+), Vite, ArtPlayer.js
|
||
- **Android TV**: Kotlin, Leanback, ExoPlayer (Media3), Retrofit
|
||
- **Styling**: Modern CSS with deep backdrop filters and Liquid Glass design tokens
|
||
- **Architecture**: Multi-stage Docker Build (Debian-slim)
|
||
|
||
## 📝 Credits
|
||
Movie data provided by `ophim` API.
|
||
Designed with ❤️ by [vndangkhoa](https://github.com/vndangkhoa).
|
||
|
||
---
|
||
|
||
> [!TIP]
|
||
> **Synology Tip**: Use the **Container Manager** (formerly Docker) on Synology. Create a new "Project" using the YAML above for the best management experience.
|