A modern, cross-platform music player built with Flutter that seamlessly integrates with Plex Media Server to provide a premium music streaming experience.
- Seamless Plex Integration: Connect directly to your Plex Media Server
- High-Quality Audio Playback: Support for FLAC, MP3, AAC, and other formats
- Smart Caching: Local database storage for offline browsing and faster loading
- Queue Management: Create and manage playback queues with drag-and-drop
- Shuffle & Repeat: Full playback controls with shuffle and repeat modes
- Dark Theme: Beautiful, eye-friendly dark interface
- Custom Window Controls: Native desktop window management
- Responsive Design: Optimized for desktop screens with proper scaling
- Album Art Display: High-quality album artwork integration
- Progress Visualization: Real-time playback progress with seek controls
-
Library Browser: Browse your entire music collection by artist, album, or track

-
Search Functionality: Fast, real-time search across your music library
- Recently Played: Quick access to recently played tracks
- Playlists: Create and manage custom playlists (coming soon)
- Multi-Server Support: Connect to multiple Plex servers simultaneously
- Server Selection: Choose between local and remote server connections
- Authentication: Secure Plex account authentication with PIN-based login
- Settings Management: Comprehensive settings for audio, display, and server preferences
- Flutter SDK: Version 3.10.8 or higher
- Dart SDK: Version 3.10.8 or higher
- Plex Media Server: A running Plex Media Server instance with music libraries
- Platform Tools: Windows, macOS, or Linux development environment
-
Clone the repository
git clone https://github.com/j-convey/apollo.git cd apollo -
Install dependencies
flutter pub get
-
Run the app
flutter run
flutter build windows --releaseflutter build macos --releaseflutter build linux --releaselib/
βββ core/ # Core application components
β βββ constants/ # App-wide constants
β βββ services/ # Business logic services
β β βββ audio_player_service.dart # Audio playback management
β β βββ plex_auth_service.dart # Plex authentication
β β βββ storage_service.dart # Local data persistence
β β βββ database_service.dart # SQLite database operations
β βββ theme/ # UI theming (future use)
β βββ utils/ # Utility functions (future use)
β βββ widgets/ # Shared UI components
β βββ apollo_app_bar.dart # Custom app bar
β βββ player_bar.dart # Playback controls
β βββ app_bar/ # App bar sub-components
βββ features/ # Feature-based modules
β βββ authentication/ # User authentication
β βββ home/ # Home screen
β βββ music/ # Music library browsing
β βββ player/ # Audio player (future use)
β βββ playlists/ # Playlist management
β βββ settings/ # App settings
β β βββ server/ # Server configuration
β βββ library/ # Library page and details
β βββ library_page.dart
β βββ utils/
β βββ widgets/
βββ main.dart # Application entry point
- Flutter: Cross-platform UI framework
- media_kit: High-performance audio playback library
- sqflite: SQLite database for local caching
- http: REST API communication
- shared_preferences: Local key-value storage
- window_manager: Custom window controls
- url_launcher: External URL handling for authentication
- Authentication: User authenticates with Plex via PIN-based OAuth flow
- Server Discovery: App discovers available Plex Media Servers
- Library Sync: Music library metadata is cached locally in SQLite
- Playback: Audio streams are played using media_kit with Plex transcoding
- Caching: Frequently accessed data is stored locally for performance
- Ensure your Plex Media Server has music libraries configured
- Enable remote access if connecting from outside your local network
- Verify that your Plex account has access to the music libraries
The app automatically handles most configuration, but you can customize:
- Server Connections: Choose between local and remote server URLs
- Audio Quality: Adjust playback quality settings (future feature)
- Cache Size: Configure local storage limits (future feature)
- Launch Apollo: Open the application on your desktop
- Authenticate: Click the settings icon and select "Server Settings"
- PIN Authentication: Follow the on-screen instructions to authenticate with Plex
- Server Selection: Choose your Plex Media Server from the available options
- Library Sync: The app will automatically sync your music library
- Browse Music: Use the home screen to access your library
- Search: Use the search bar in the app bar to find specific tracks
- Play Music: Click on any track to start playback
- Queue Management: Add tracks to queue and control playback order
- Navigation: Use back/forward buttons for navigation history
- Secure Authentication: Uses Plex's official OAuth flow with PIN-based authentication
- Token Management: Securely stores authentication tokens using platform-specific secure storage
- HTTPS Communication: All network requests use HTTPS encryption
- Local Data: Sensitive data is stored securely on the local device
Run the app in debug mode to see detailed logs:
flutter run --debugWe welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Apollo - Bringing your music collection to life with modern desktop audio streaming.