A modern, feature-rich Android music & video player powered by YouTube Music
Built entirely with Kotlin and Jetpack Compose, The Music App delivers a premium music and video experience with Material 3 Expressive design. Stream music, watch videos, and enjoy personalized recommendations—all without requiring official API keys.
| Home - Light | Home - Dark |
![]() |
![]() |
| Search - Light | Search - Dark |
![]() |
![]() |
| Library - Light | Library - Dark |
![]() |
![]() |
| Settings - Light | Settings - Dark |
![]() |
![]() |
| Now Playing - Light | Now Playing - Dark |
![]() |
![]() |
| Gesture Player - Light | Gesture Player - Dark |
![]() |
![]() |
| Queue - Light | Queue - Dark |
![]() |
![]() |
| Lyrics - Light | Lyrics - Dark |
![]() |
![]() |
| Video Player - Light | Video Player - Dark |
![]() |
![]() |
| Video Home - Light | Video Home - Dark |
![]() |
![]() |
| Mini Video Player | Video History |
![]() |
![]() |
| Downloads | YouTube Sign In |
![]() |
![]() |
- Search — Find songs, albums, artists, and playlists from the YouTube Music catalog
- Personalized Recommendations — Quick picks and curated suggestions based on your history
- Playlist Access — Browse and play your playlists including "Liked Songs" and "Supermix"
- History Sync — Tracks you play sync with your YouTube Music history
- Like/Unlike — Heart your favorite songs directly from the player
- In-App Video Playback — Watch music videos without leaving the app
- Picture-in-Picture — Continue watching in a floating window
- Quality Selection — Choose from available qualities (1080p, 720p, etc.)
- Mini Player — Collapse to a mini bar while browsing
- Related Videos — Discover more content with smart recommendations
- Auto-Play — Seamlessly play the next video
- High-Quality Streaming — Optimized audio via NewPipe Extractor
- Queue Management — Full queue control with drag-to-reorder
- Shuffle & Repeat — Standard playback modes (off, one, all)
- Media Session — System-wide controls via notification & lock screen
- Local Music Support — Optional playback of local audio files
- Download Songs — Save tracks for offline listening
- Download Playlists — Batch download entire playlists
- Download Manager — Track progress and manage downloads
- Material 3 Expressive — Shape morphing, spring physics, dynamic colors
- Dynamic Theming — Album artwork influences the color palette
- Light, Dark & System — Choose your preferred theme
- Gesture-Based Navigation — Intuitive swipe controls
- Animated Transitions — Smooth, physics-based animations
- YouTube Playlists — Access all your saved playlists with cover art
- Liked Songs — Dedicated section for hearted tracks
- Quick Access Cards — Fast navigation to frequent sections
- Cookie-Based Auth — Sign in via embedded WebView
- Secure Storage — Credentials stored with EncryptedSharedPreferences
| Component | Technology |
|---|---|
| Language | Kotlin |
| UI Framework | Jetpack Compose |
| Architecture | MVVM with StateFlow |
| Playback | Media3 ExoPlayer |
| Networking | OkHttp |
| Data Extraction | NewPipe Extractor |
| Image Loading | Coil |
| Concurrency | Kotlin Coroutines & Flow |
| Min SDK | 31 (Android 12) |
| Target SDK | 36 |
app/src/main/java/com/ivor/ivormusic/
├── data/ # Data layer
│ ├── YouTubeRepository # YouTube Music API via NewPipe
│ ├── DownloadRepository # Download management
│ ├── SessionManager # Auth & cookies
│ └── Models # Song, Playlist, VideoItem
├── service/ # Background services
│ └── MusicService # MediaLibraryService
└── ui/ # Presentation layer
├── home/ # Home with recommendations
├── library/ # Playlists & liked songs
├── player/ # Music player & queue
├── video/ # Video player (NEW!)
├── search/ # Search functionality
├── downloads/ # Download manager (NEW!)
├── settings/ # App preferences
├── auth/ # YouTube sign-in
├── components/ # Reusable UI components
└── theme/ # Material 3 theming
- Android Studio Ladybug or newer
- Android device or emulator (API 31+)
-
Clone the repository
git clone https://github.com/Ivorisnoob/TheMusicApp.git
-
Open in Android Studio
-
Sync Gradle to download dependencies
-
Run on your device
To access personalized features:
- Navigate to Settings
- Tap "Connect YouTube Account"
- Sign in with your Google account
- Enjoy personalized recommendations!
./gradlew assembleDebugConfigure keystore in app/build.gradle.kts, then:
./gradlew assembleReleaseAPKs are split by ABI for optimized sizes:
armeabi-v7a— 32-bit ARMarm64-v8a— 64-bit ARM
- Enhanced Playlist Management — Create & edit playlists
- Advanced Audio — Equalizer, gapless playback, crossfade
- Lyrics Support — Display synced lyrics
- Widget — Home screen music controls
- Kotlin Multiplatform — Desktop & iOS support
Contributions are welcome! Please:
- Open an issue to discuss proposed changes
- Submit a pull request with your improvements
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
You are free to:
- Share — Copy and redistribute in any medium
- Adapt — Remix, transform, and build upon
Under the terms:
- Attribution — Give appropriate credit
- NonCommercial — No commercial use
See the LICENSE file or visit creativecommons.org/licenses/by-nc/4.0
Made with love by ivorisnoob
Copyright 2026
























