VibePlayer is a modern, feature-rich local music player for Android, built with the latest technologies including Jetpack Compose, Media3 ExoPlayer, and Koin.
Important
This project was developed for the Mobile Dev Campus, focusing on industry-standard Clean Architecture and modern Android development practices.
- Scan Local Audio: Automatically finds and indexes audio files on your device.
- Smart Playlists: Create, manage, and play your favorite tracks.
- Smooth Playback: Powered by Media3 ExoPlayer for a reliable and high-quality listening experience.
- Modern UI: A beautiful, responsive interface designed with Material 3.
- Search: Quickly find the songs you want to hear.
The project leverages a modern Android tech stack:
- Language: Kotlin
- UI Framework: Jetpack Compose (Material 3)
- Dependency Injection: Koin
- Database: Room
- Media Playback: Media3 ExoPlayer
- Image Loading: Coil 3
- Navigation: Navigation Compose
- Permissions: Accompanist Permissions
- Architecture: Clean Architecture (Presentation, Domain, Data) with MVI pattern.
This app follows the Clean Architecture principles to ensure separation of concerns and testability:
- Presentation Layer: Contains UI components (Compose), ViewModels, and UI State/Events.
- Domain Layer: Repository interfaces. Pure Kotlin, no Android dependencies.
- Data Layer: Contains Repository implementations, Data Sources (Room, File System), and Mappers.
Clone the repository:
git clone https://github.com/your-username/VibePlayer.git| All Songs | Playlist Options | Add Songs to Playlist |
|---|---|---|
![]() |
![]() |
![]() |
| Playlist Detail | Fullscreen Player |
|---|---|
![]() |
![]() |
This project is open source.
Author: LiHan
Project Link: VibePlayer
- Background Playback: Support seamless audio streaming and media controls via
MediaSessionServicewhen the app is in the background. - Dark/Light & Dynamic Theme: Support for Android 12+ Material You dynamic coloring and seamless switching between dark and light modes.
- Android Auto Support: Extend the music experience to car dashboards for a safer driving experience.
- Unit & UI Testing: Increase code coverage with Room database tests and Compose UI tests to ensure app stability and reliability.




