# StreamFlow - Cross-Platform Deployment Guide Complete guide for deploying StreamFlow across all platforms: Web, PWA, Linux AppImage, and Android APK. --- ## 🎯 Platform Support Matrix | Feature | Web | PWA | Linux AppImage | Android APK | |---------|-----|-----|----------------|-------------| | Live TV Streaming | ✅ | ✅ | ✅ | 🔄 (Planned) | | Hardware Acceleration | ✅ | ✅ | ✅ | 🔄 (Planned) | | Offline Mode | ⚠️ | ✅ | ✅ | 🔄 (Planned) | | System Tray | ❌ | ❌ | ✅ | ❌ | | Auto-Update | ❌ | ⚠️ | ✅ | 🔄 (Planned) | | Picture-in-Picture | ✅ | ✅ | ✅ | 🔄 (Planned) | | 2FA Support | ✅ | ✅ | ✅ | 🔄 (Planned) | | Chromecast | ⚠️ | ⚠️ | ✅ | 🔄 (Planned) | **Legend:** - ✅ Fully Supported - ⚠️ Partial Support / Browser Dependent - 🔄 Planned / In Development - ❌ Not Available --- ## 🐳 Docker Container (Server-Side) ### What's Bundled in Docker: ✅ **Media Processing:** - FFmpeg with all codecs (H.264, H.265, VP8, VP9, AV1) - Hardware acceleration (Intel Quick Sync, VAAPI, NVIDIA) - Audio codecs (AAC, Opus, MP3, Vorbis, Theora) - Streamlink for stream extraction - yt-dlp for additional sources ✅ **Server Features:** - Live TV & Radio streaming - Recording scheduler - User authentication & 2FA - Database (SQLite) - API endpoints - Update server for desktop app ✅ **PWA Assets:** - Service worker - Web manifest - Icons (all sizes) - Offline caching strategy ### Codecs Included: ```bash # Video Codecs - H.264 (AVC) via x264 - H.265 (HEVC) via x265 - VP8/VP9 via libvpx - AV1 via aom - Theora # Audio Codecs - AAC via fdk-aac - MP3 via lame - Opus via libopus - Vorbis via libvorbis # Subtitle Support - ASS/SSA via libass - WebVTT - SRT # Container Formats - MP4, MKV, WebM, FLV, TS - M3U8 (HLS) - DASH ``` ### Build Docker Container: ```bash cd /home/iulian/projects/tv docker compose build --no-cache docker compose up -d ``` --- ## 🌐 Web Application ### Features (Client-Side): - React 18 + Vite + MUI - Responsive design (mobile, tablet, desktop) - Light/Dark theme - Multi-language (EN, RO) - Video.js player with HLS support - WebRTC for low-latency (when available) ### What's NOT in Docker (Client-Side): ❌ Native OS integration ❌ System tray ❌ Auto-update mechanism ❌ Full offline mode ❌ Native notifications (uses browser) ### Access: ``` http://localhost:12345 ``` --- ## 📱 Progressive Web App (PWA) ### Features: ✅ Installable on desktop & mobile ✅ Offline static assets caching ✅ Service worker for background sync ✅ Push notifications (browser dependent) ✅ App-like experience ✅ Home screen icon ### Setup: 1. **Generate Assets:** ```bash ./scripts/generate-assets.sh ``` 2. **Test PWA:** ```bash ./scripts/test-pwa.sh ``` 3. **Install on Device:** - **Desktop Chrome:** Click install icon in address bar - **Android Chrome:** Menu → "Add to Home screen" - **iOS Safari:** Share → "Add to Home Screen" ### Requirements: - HTTPS in production (localhost works for testing) - Valid manifest.json ✅ - Service worker registered ✅ - Icons (192x192, 512x512 minimum) ✅ ### Lighthouse Audit: ```bash npm install -g lighthouse lighthouse http://localhost:12345 --view --only-categories=pwa ``` --- ## 🐧 Linux Desktop App (Electron AppImage) ### Features: ✅ Native desktop application ✅ System tray integration ✅ Auto-update from Docker container ✅ Offline mode with caching ✅ Picture-in-Picture ✅ Chromecast support ✅ Encrypted credential storage ✅ Hardware acceleration ### Build: ```bash cd desktop-app npm install ./build.sh # Output: dist/StreamFlow-1.1.0-x86_64.AppImage ``` ### Install: ```bash chmod +x StreamFlow-*.AppImage ./StreamFlow-*.AppImage ``` ### Features from Container: - Updates served from http://localhost:9000 - Streams media from http://localhost:12345 - Uses container's codecs for transcoding --- ## 🤖 Android APK (Future) ### Planned Features: 🔄 Native Android app via Capacitor 🔄 Google Play Store distribution 🔄 Hardware video decoding 🔄 Background playback 🔄 Android TV support 🔄 Picture-in-Picture 🔄 Offline downloads ### Build (When Ready): ```bash ./scripts/build-android.sh ``` ### Requirements: - Node.js 18+ - Android Studio - Android SDK - Java JDK 11+ ### Steps: 1. Build frontend: `npm run build` 2. Initialize Capacitor: `npx cap init` 3. Add Android: `npx cap add android` 4. Sync assets: `npx cap sync android` 5. Build APK: `cd android && ./gradlew assembleDebug` ### Distribution: - **Debug APK:** For testing - **Release APK:** Signed for production - **Google Play:** AAB format required --- ## 🎨 Asset Management ### Generate All Platform Assets: ```bash ./scripts/generate-assets.sh ``` Generates: - PWA icons (72px to 512px) - iOS icons (180x180, 167x167) - Android icons (mdpi to xxxhdpi) - Desktop icons (512x512) - Favicon (16x16, 32x32) - Splash screens (all iOS sizes) ### Source Icon: - **Location:** `frontend/public/icons/icon-512x512.svg` - **Format:** SVG (vector) for best quality - **Fallback:** PNG files generated automatically --- ## 🚀 Deployment Checklist ### Development: - [ ] Docker container running - [ ] Update server running (port 9000) - [ ] Main server running (port 12345) - [ ] PWA manifest configured - [ ] Service worker registered - [ ] Icons generated ### Testing: - [ ] Test web app in Chrome/Firefox - [ ] Install PWA on desktop - [ ] Install PWA on Android - [ ] Install PWA on iOS - [ ] Test AppImage on Linux - [ ] Run Lighthouse audit - [ ] Test offline mode - [ ] Test hardware acceleration ### Production: - [ ] HTTPS enabled - [ ] Valid SSL certificate - [ ] Environment variables set - [ ] Secrets configured - [ ] Backup strategy in place - [ ] Monitoring enabled - [ ] Update server accessible - [ ] CDN for static assets (optional) --- ## 📊 Platform Comparison ### Web App: **Pros:** - ✅ Universal access (any device) - ✅ No installation required - ✅ Easy updates (server-side) - ✅ Cross-platform **Cons:** - ❌ Requires internet connection - ❌ No native OS integration - ❌ Limited background tasks - ❌ Browser dependent features ### PWA: **Pros:** - ✅ Installable like native app - ✅ Works offline (partial) - ✅ Push notifications - ✅ Smaller download than native - ✅ Automatic updates **Cons:** - ❌ Limited iOS support - ❌ No system tray - ❌ Browser engine limitations - ❌ Partial offline support ### Linux AppImage: **Pros:** - ✅ Full native experience - ✅ System tray integration - ✅ Auto-updates - ✅ Complete offline mode - ✅ Best performance **Cons:** - ❌ Linux only - ❌ Larger download (~100MB) - ❌ Requires desktop environment - ❌ Platform-specific builds ### Android APK (Planned): **Pros:** - ✅ Native Android experience - ✅ Play Store distribution - ✅ Background playback - ✅ Android TV support - ✅ Better mobile performance **Cons:** - ❌ Requires development - ❌ Separate codebase maintenance - ❌ Play Store requirements - ❌ Android-specific testing --- ## 🔧 Troubleshooting ### Web/PWA Issues: **Service worker not registering:** ```bash # Check browser console for errors # Verify HTTPS (or localhost) # Clear browser cache ``` **Icons not showing:** ```bash ./scripts/generate-assets.sh docker compose build --no-cache docker compose up -d ``` **Offline mode not working:** - Check service worker in DevTools → Application - Verify cache strategy in service-worker.js - Test with DevTools → Network → Offline ### AppImage Issues: **Update check failing:** ```bash # Verify update server is running docker logs streamflow | grep "Update server" curl http://localhost:9000/latest-linux.yml ``` **FUSE errors:** ```bash sudo apt install fuse libfuse2 ./StreamFlow-*.AppImage --appimage-extract-and-run ``` ### Docker Issues: **Codec not found:** ```bash # Check FFmpeg installation docker exec streamflow ffmpeg -codecs | grep h264 docker exec streamflow ffmpeg -encoders ``` **Port conflicts:** ```bash # Check ports ss -tlnp | grep -E ':(9000|12345)' # Kill conflicting processes sudo lsof -ti:9000 | xargs -r kill -9 ``` --- ## 📚 Additional Resources ### Documentation: - [Architecture Guide](ARCHITECTURE.md) - [Build Guide](BUILD.md) - [Desktop App Guide](../desktop-app/README.md) - [Security Audit](../desktop-app/SECURITY_AUDIT.md) ### External: - [PWA Documentation](https://web.dev/progressive-web-apps/) - [Capacitor Documentation](https://capacitorjs.com/docs) - [Electron Builder](https://www.electron.build/) - [FFmpeg Codecs](https://ffmpeg.org/documentation.html) --- ## 📞 Support For issues, questions, or contributions: - Check documentation first - Review troubleshooting section - Check Docker logs: `docker logs streamflow` - Check browser console for client errors --- **Version:** 1.1.0 **Last Updated:** December 2025 **Platforms:** Web, PWA, Linux AppImage, Android (Planned)