A cross-platform application for listening to Bassdrive Internet radio and archived shows. Built with Flutter for iOS, Android, macOS, Windows, and Linux.
- Live Stream: Listen to Bassdrive's 24/7 Drum & Bass radio stream
- Archive Browser: Browse shows by day of the week (Monday-Sunday)
- Show Episodes: Access hundreds of archived episodes
- Listening History: Automatically tracks which episodes you've listened to
- Progress Tracking: Saves your listening position and resumes where you left off
- Favourites/Bookmarks: Save your favourite episodes for quick access
- Filter & Sort: Search and sort favourites by date, name, or show
- Listening Statistics: Track total listening time for live stream and archives
- Offline Downloads: Episodes auto-download when played, with local download management
- Background Playback: Continue listening while using other apps
- Adaptive Navigation: Mobile bottom navigation and desktop sidebar layout
- Flutter SDK (3.10.0 or higher)
- Dart SDK (3.0.0 or higher)
- Android Studio / Xcode (for emulators)
- Android SDK / iOS SDK
git clone https://github.com/v3rm0n/bassdrive-app.git
cd bassdrive-app
flutter pub get# iOS
flutter run -d ios
# Android
flutter run -d android
# macOS
flutter run -d macos
# Windows
flutter run -d windows# iOS
flutter build ios --release
# Android
flutter build apk --release
# or
flutter build appbundle --release
# macOS
flutter build macos --release
# Windows
flutter build windows --release
# Linux
flutter build linux --releaseThe app is built using:
- Flutter: Cross-platform UI framework
- just_audio: Audio playback with background support
- audio_service: Background audio handling
- dio: HTTP client for API requests
- shared_preferences: Local storage for listening progress, favourites, and statistics
- Service-oriented + ChangeNotifier: State management and app services
lib/
├── main.dart # App entry point
├── models/ # Data models
├── services/ # Business logic
├── screens/ # UI screens
├── widgets/ # Reusable widgets
└── utils/ # Utilities
The app uses the Bassdrive JSON API:
- API endpoint:
https://bd.maido.io/api.json - Live stream URL is sourced from the API
livefield - Archive data is sourced from the API
archivefield
- Bottom navigation bar
- Mini player at bottom
- Touch-optimized interface
- Sidebar navigation (280px width)
- Content pane with player, archive, favourites, and downloads screens
- Keyboard/mouse-optimized interface
- Audio background mode (for playback when app is in background)
- Internet access
- Wake lock (prevent sleep during playback)
- Foreground service (for background playback)
- Network client entitlement (for API and streaming)
- App Transport Security configured for HTTP streams
- App sandbox enabled
- No special permissions required
- Tested on Ubuntu 22.04+
- Requires GTK3 development libraries for building
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
- Bassdrive.com for the amazing drum & bass radio stream
- The Flutter team for the excellent framework
- All the DJs and shows featured in the archive
- Added Linux support with automated builds
- Updated GitHub Actions workflow to build and release Linux tarball
- Fixed Android launch issue by updating NDK version to 28.0.12433566
- Fixed Android release builds
- Update Windows and macOS icons and application name
- Full desktop support for macOS and Windows
- Adaptive UI with sidebar navigation on desktop
- Desktop-optimized player bar with full controls
- GitHub Actions workflow for automated releases on all platforms
- Track listening time statistics
- Separate tracking for live stream and archives
- New "Stats" tab in navigation
- Enhanced favourites management with sort and filter
- Search within favourites
- Filter by specific show
- Added favourites/bookmarks functionality
- Heart icon on every episode
- New "Favourites" tab in navigation
- Fixed broken widget test
- Fixed slider value clamping bug in full player
- Fixed error state handling in audio player service
- Fixed race condition in progress tracking
- Fixed missing mounted check in navigation
- Improved storage efficiency
- Removed unused dependencies
- Fixed null safety issues
- Fixed macOS network entitlements for API access
- Fixed macOS App Transport Security for HTTP streams
For issues or feature requests, please open an issue on GitHub.