Skip to content

Ivorisnoob/TheMusicApp

Repository files navigation

The Music App Logo

The Music App

A modern, feature-rich Android music & video player powered by YouTube Music

Platform Min SDK Kotlin Compose

Stars Forks


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.

Screenshots

Core Screens

Home - Light Home - Dark
Search - Light Search - Dark
Library - Light Library - Dark
Settings - Light Settings - Dark

Music Player

Now Playing - Light Now Playing - Dark
Gesture Player - Light Gesture Player - Dark
Queue - Light Queue - Dark
Lyrics - Light Lyrics - Dark

Video Player

Video Player - Light Video Player - Dark
Video Home - Light Video Home - Dark
Mini Video Player Video History

Downloads & Auth

Downloads YouTube Sign In

Features

YouTube Music Integration

  • 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

Video Player (NEW!)

  • 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

Playback

  • 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

Downloads (NEW!)

  • Download Songs — Save tracks for offline listening
  • Download Playlists — Batch download entire playlists
  • Download Manager — Track progress and manage downloads

User Interface

  • 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

Library

  • 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

Authentication

  • Cookie-Based Auth — Sign in via embedded WebView
  • Secure Storage — Credentials stored with EncryptedSharedPreferences

Technical Stack

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

Project Structure

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

Getting Started

Prerequisites

  • Android Studio Ladybug or newer
  • Android device or emulator (API 31+)

Installation

  1. Clone the repository

    git clone https://github.com/Ivorisnoob/TheMusicApp.git
  2. Open in Android Studio

  3. Sync Gradle to download dependencies

  4. Run on your device

YouTube Account (Optional)

To access personalized features:

  1. Navigate to Settings
  2. Tap "Connect YouTube Account"
  3. Sign in with your Google account
  4. Enjoy personalized recommendations!

Building

Debug APK

./gradlew assembleDebug

Release APK

Configure keystore in app/build.gradle.kts, then:

./gradlew assembleRelease

APKs are split by ABI for optimized sizes:

  • armeabi-v7a — 32-bit ARM
  • arm64-v8a — 64-bit ARM

Roadmap

  • 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

Contributing

Contributions are welcome! Please:

  1. Open an issue to discuss proposed changes
  2. Submit a pull request with your improvements

License

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

About

A Material Expressive Music app for Android

Topics

Resources

Stars

Watchers

Forks

Languages