A native Android music player application that allows users to stream music from Melodee servers. The application is built using modern Android development practices with Jetpack Compose and supports Android Auto integration for in-car entertainment.
This app is very heavily vibe coded.
- ๐ Android Auto Integration - Full support with voice commands and car-optimized UI
- ๐ต Modern UI - Built with Jetpack Compose and Material Design 3
- ๐๏ธ Clean Architecture - MVVM pattern with Clean Architecture principles
- ๐ Efficient Networking - Retrofit with OkHttp for reliable API communication
- ๐ง Media3 Playback - Advanced media playback with ExoPlayer
- ๐ฑ Playlist Management - Browse and manage playlists with infinite scrolling
- ๐ Search Functionality - Search for songs and playlists
- ๐ User Authentication - Secure login with configurable server endpoints
- ๐ Pull-to-Refresh - Refresh content with intuitive gestures
- ๐ฎ Playback Controls - Persistent now playing bar with full media controls
src/
โโโ build.gradle.kts # Root project configuration (Kotlin DSL)
โโโ settings.gradle.kts # Project settings (Kotlin DSL)
โโโ app/
โ โโโ build.gradle.kts # App module configuration (Kotlin DSL)
โ โโโ src/main/java/com/melodee/autoplayer/
โ โโโ data/ # Data layer (API, repositories)
โ โโโ domain/ # Domain layer (models, use cases)
โ โโโ presentation/ # Presentation layer (ViewModels, UI)
โ โโโ service/ # Background services (media, scrobbling)
โ โโโ ui/ # UI components and themes
โ โโโ util/ # Utility classes
โ โโโ MelodeeApplication.kt # Application class
โโโ gradlew # Gradle wrapper (Unix)
โโโ gradlew.bat # Gradle wrapper (Windows)
โโโ gradle/ # Gradle wrapper configuration
The application follows Clean Architecture with MVVM pattern:
- API interfaces and implementations
- Repository pattern for data access
- Network models and DTOs
- Local caching strategies
- Business logic and use cases
- Domain models and entities
- Repository interfaces
- Business rules validation
- Jetpack Compose UI components
- ViewModels with state management
- Navigation with Navigation Compose
- UI state handling
- Media playback service
- Android Auto integration
- Background processing
- Scrobbling and analytics
- Android Studio Hedgehog (2023.1.1) or later
- JDK 17 or higher
- Android SDK with API level 35
- Git for version control
-
Clone the repository
git clone <repository-url> cd melodee-player
-
Open in Android Studio
- Open Android Studio
- Select "Open an existing project"
- Navigate to the cloned directory and select the
src
folder
-
Configure API endpoint
- Launch the application
- Enter your Melodee server URL in the login screen
- Provide your credentials
-
Build and run
cd src ./gradlew build ./gradlew installDebug
- Android Studio: Hedgehog (2023.1.1) or later
- JDK: 17 or higher
- Android SDK: API 21-35
- Kotlin: 1.9.20
- Gradle: 8.12
- Android Gradle Plugin: 8.10.0
- Minimum SDK: API 21 (Android 5.0)
- Target SDK: API 35 (Android 15)
- Architecture: ARM64, ARM, x86_64
- AndroidX Core KTX: 1.15.0
- AppCompat: 1.7.0
- Material Design: 1.12.0
- Compose BOM: 2024.12.01
- Activity Compose: 1.9.3
- Navigation Compose: 2.8.5
- Material 3: Latest
- Compiler: 1.5.4
- Lifecycle Runtime: 2.8.7
- ViewModel: 2.8.7
- ViewModel Compose: 2.8.7
- Runtime Compose: 2.8.7
- Media3 ExoPlayer: 1.2.0
- Media3 UI: 1.2.0
- Media3 Session: 1.2.0
- AndroidX Media: 1.7.0 (Android Auto support)
- Retrofit: 2.11.0
- Gson Converter: 2.11.0
- OkHttp: 4.12.0
- Logging Interceptor: 4.12.0
- Coil: 2.7.0
- Coil Compose: 2.7.0
- Coil GIF: 2.7.0
- Kotlin Coroutines: 1.9.0
- JUnit: 4.13.2
- AndroidX Test: 1.2.1
- Espresso: 3.6.1
- Compose Testing: Latest
This project uses Kotlin DSL for Gradle build scripts, providing:
- Type-safe build configuration
- Better IDE support and autocomplete
- Compile-time error checking
- Consistent syntax with Kotlin codebase
# Clean build
./gradlew clean
# Debug build
./gradlew assembleDebug
# Release build
./gradlew assembleRelease
# Run tests
./gradlew test
# Install on device
./gradlew installDebug
- Launch the application
- Configure your Melodee server URL
- Login with your credentials
- Browse available playlists and songs
- Select content to start playback
- Control playback using the now playing bar
- Connect your device to Android Auto
- Launch the Melodee app from the car interface
- Use voice commands for hands-free control
- Browse playlists using car-safe UI
- Control playback with steering wheel controls
- "Play [song/artist/playlist name]"
- "Pause music"
- "Skip to next song"
- "Go back to previous song"
- "Shuffle my music"
- ๐ต Media Playback Controls - Play, pause, skip, previous
- ๐ฃ๏ธ Voice Commands - Full voice control integration
- ๐ Metadata Display - Song title, artist, album art
- ๐ Playlist Browsing - Car-optimized playlist navigation
- ๐ Search Functionality - Voice and text search
- ๐๏ธ Steering Wheel Controls - Hardware button support
- Media3 MediaSession for playback control
- MediaBrowserService for content browsing
- Custom MediaSessionCallback for Android Auto commands
- Optimized UI for automotive displays
- 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 Kotlin coding conventions
- Use ktlint for code formatting
- Write meaningful commit messages
- Include tests for new features
- Ensure all tests pass
- Update documentation if needed
- Follow the existing code style
- Include screenshots for UI changes
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Check existing documentation
- Review the code comments for implementation details