Skip to content

Platform Setup

The Dester client is a cross-platform application for browsing and streaming your DesterLib media collection. This guide covers platform-specific setup and development.

  • Android - Phones and tablets (SDK 21+)
  • iOS - iPhone and iPad (iOS 12.0+)
  • macOS - Desktop application (10.14+)
  • Linux - Desktop application (Ubuntu 20.04+)
  • Windows - Desktop application (Windows 10+)
  • Android TV - TV interface with remote control support
  • Apple TV / tvOS - Native TV experience
  • Flutter SDK 3.9.2 or higher
  • DesterLib API server running
  • Platform-specific development tools (Android Studio, Xcode, etc.)
Terminal window
# Clone the repository
git clone https://github.com/DesterLib/desterlib-flutter.git
cd desterlib-flutter
# Install dependencies
flutter pub get
# Generate code
dart run build_runner build --delete-conflicting-outputs
# Run the app
flutter run

On first launch, configure your DesterLib API server:

  1. Open SettingsServer Configuration
  2. Enter your server URL:
    • Local: http://localhost:3001
    • Network: http://192.168.1.XXX:3001
    • Remote: https://yourdomain.com
  3. Save and the app will connect automatically

The client is built with Flutter, providing native performance across all platforms:

  • Flutter SDK - Cross-platform UI framework
  • Riverpod - State management
  • go_router - Navigation and routing
  • media_kit - Video playback
  • OpenAPI - Auto-generated API client
lib/
├── main.dart # App entry point
├── app/
│ ├── router.dart # Navigation configuration
│ ├── theme/ # App theming
│ └── providers.dart # Global providers
├── features/ # Feature modules
│ ├── home/ # Home screen
│ ├── library/ # Library browsing
│ ├── media/ # Media detail pages
│ └── settings/ # Settings and configuration
├── shared/
│ ├── widgets/ # Reusable UI components
│ ├── utils/ # Utility functions
│ └── providers/ # Shared state providers
└── api/ # Generated API client
  • Browse movies and TV shows
  • Search functionality
  • Filter by genre, year, rating
  • Sort options
  • Grid and list views
  • Smooth streaming playback
  • Playback controls (play, pause, seek)
  • Volume control
  • Fullscreen support
  • Playback speed adjustment
  • Subtitle support (coming soon)
  • Audio track selection (coming soon)
  • Automatic progress tracking
  • Resume from where you left off
  • Mark as watched/unwatched
  • Watch history
  • Server configuration
  • Theme selection (light/dark)
  • Playback preferences
  • Cache management
  • About and version info

See the contributing guide for development setup.

All contribution guidelines (commits, versioning, etc.) follow the main DesterLib standards documented in this site.

Terminal window
# APK
flutter build apk --release
# App Bundle (for Play Store)
flutter build appbundle --release
Terminal window
# Build for iOS
flutter build ios --release
# Open in Xcode for deployment
open ios/Runner.xcworkspace
Terminal window
# macOS
flutter build macos --release
# Linux
flutter build linux --release
# Windows
flutter build windows --release
Terminal window
# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage
# Run specific test file
flutter test test/features/player_test.dart
Terminal window
# Analyze code
flutter analyze
# Format code
dart format lib/
# Run linter
flutter analyze --fatal-infos
  • TV Platform Support - Android TV and Apple TV
  • Subtitle Support - SRT, VTT formats
  • Audio Track Selection - Multiple audio streams
  • Offline Downloads - Save for offline viewing
  • Chromecast - Cast to any TV
  • Picture-in-Picture - Watch while using other apps
  • Widgets - Quick access shortcuts
  • Multi-User Profiles - Separate watch history
  • Parental Controls - Content restrictions
  • Minimum SDK: 21 (Android 5.0)
  • Target SDK: 34 (Android 14)
  • Uses ExoPlayer for video playback
  • Minimum version: iOS 12.0
  • Uses AVPlayer for video playback
  • Requires Xcode 14+ for building
  • Minimum version: macOS 10.14
  • Requires code signing for distribution
  • Tested on Ubuntu 20.04+, Fedora 36+
  • Requires GTK 3.0
  • Minimum version: Windows 10
  • Uses Windows Media Foundation

Can’t connect to server:

  • Check server URL is correct
  • Ensure API is running (docker compose up)
  • Check firewall settings
  • Try using IP address instead of localhost

Videos won’t play:

  • Check internet connection
  • Verify video codec support
  • Try different video file
  • Check server streaming configuration

Buffering issues:

  • Check network speed
  • Adjust video quality in settings
  • Check server performance

Flutter build fails:

Terminal window
# Clean and rebuild
flutter clean
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter run

Platform-specific build issues:

  • Android: Check SDK version, update Gradle
  • iOS: Update Xcode, check provisioning profiles
  • Desktop: Check platform dependencies installed