A Modern Flutter Music Player
Combining local playback, audiobooks, and live radio in one elegant experience.
HariWave is a feature-rich music player application built with Flutter, designed to provide a seamless audio experience across multiple content types. Whether you're listening to your local music library, enjoying audiobooks during commutes, or tuning into live radio stations, HariWave delivers a premium, unified experience.
- Local Music Playback – Scan and play music from your device with full metadata support
- Audiobook Support – Dedicated audiobook player with chapter navigation and bookmarks
- Live Radio – Stream radio stations with beautiful station artwork
- Queue Management – Add tracks to queue, reorder, and manage playback
- Mini Player – Persistent mini player visible across all screens
- Recently Played – Quick access to your listening history
- Liked Songs – Save your favorite tracks for easy access
- Playlists – Create and manage custom playlists
- Lyrics Display – View synchronized lyrics while playing
- Media Controls – Lock screen and notification controls
- Beautiful UI – Modern design with smooth animations
lib/
├── main.dart # App entry point
├── models/ # Data models (Audiobook, Song, Playlist, etc.)
├── providers/ # State management (Provider pattern)
├── screens/ # UI screens
├── services/ # Business logic services
├── utils/ # Utility functions and helpers
└── widgets/ # Reusable UI components
| Layer | Description |
|---|---|
| Models | Data structures for audiobooks, songs, playlists, radio stations, and Spotify metadata |
| Providers | State management using ChangeNotifier pattern for audio, playlists, liked songs, and recent plays |
| Services | Audio playback, storage, authentication, downloads, and external API integrations |
| Widgets | Mini player, song tiles, seek bar, playback controls, and other reusable components |
The audio system is built on:
- just_audio – Core audio playback engine
- audio_service – Background playback and media session management
- audio_session – Audio focus handling
| Technology | Purpose |
|---|---|
| Flutter 3.9+ | Cross-platform UI framework |
| Dart | Programming language |
| Provider | State management |
| Hive | Local storage and caching |
| Dio | HTTP networking |
| Firebase | Authentication and cloud services |
| MediaSession | Android lock screen controls |
See pubspec.yaml for the complete list. Key packages include:
just_audio– Audio playbackaudio_service– Background audiohive_flutter– Local databasecached_network_image– Image cachingprovider– State managementfirebase_auth– User authenticationgoogle_sign_in– OAuth integration
- Flutter SDK 3.9.2 or higher
- Dart SDK 3.9.2 or higher
- Android Studio or VS Code with Flutter extensions
- Android SDK (API 21+)
- A physical Android device or emulator
-
Clone the repository
git clone https://github.com/hariomgupta70427/HariWave.git cd HariWave -
Install dependencies
flutter pub get
-
Configure Firebase (required for auth)
- Create a Firebase project at console.firebase.google.com
- Add an Android app with package name:
com.hariverse.hariwave - Download
google-services.jsontoandroid/app/
-
Configure Spotify API (required for metadata)
- Create a Spotify Developer app at developer.spotify.com
- Copy
lib/services/spotify_service.dart.exampletolib/services/spotify_service.dart - Add your Spotify client credentials
-
Run the app
flutter run
flutter run -d <device_id>flutter build apk --releaseThe APK will be available at:
build/app/outputs/flutter-apk/app-release.apk
flutter build apk --split-per-abiHariWave/
├── android/ # Android platform files
├── assets/ # Static assets (icons, JSON configs)
├── ios/ # iOS platform files (future support)
├── lib/ # Dart source code
│ ├── main.dart
│ ├── models/
│ ├── providers/
│ ├── screens/
│ ├── services/
│ ├── utils/
│ └── widgets/
├── pubspec.yaml # Dependencies and metadata
└── README.md
The following files contain sensitive configuration and are git-ignored:
| File | Purpose |
|---|---|
lib/services/spotify_service.dart |
Spotify API credentials |
android/app/google-services.json |
Firebase configuration |
android/local.properties |
Local SDK paths |
android/key.properties |
Release signing key |
Note: You must configure these files locally before building.
HariWave requires the following Android permissions:
INTERNET– Network access for streaming and metadataREAD_EXTERNAL_STORAGE– Access local music filesFOREGROUND_SERVICE– Background audio playbackWAKE_LOCK– Keep device awake during playbackRECEIVE_BOOT_COMPLETED– Restore audio session after reboot
Contributions are welcome! Please follow these guidelines:
- 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
- Follow the official Dart Style Guide
- Run
flutter analyzebefore submitting PRs - Ensure all tests pass with
flutter test
This project is proprietary software developed by Hariom Gupta.
Developer: Hariom Gupta
For questions, feedback, or collaboration inquiries, please open an issue on GitHub.