Skip to content

theovilardo/PixelPlay

Repository files navigation

PixelPlay Music Player 🎵

App Icon

  Screenshot 1   Screenshot 2   Screenshot 3   Screenshot 4

Latest Release Total Downloads

PixelPlay is a modern, offline-first music player for Android, built with Kotlin and Jetpack Compose. It's designed to provide a beautiful and seamless experience for listening to your local music library.

✨ Core Features

  • Local Music Playback: Scans and plays your local audio files (MP3, FLAC, AAC, etc.).
  • Background Playback: Listen to music while the app is in the background, thanks to a foreground service and Media3.
  • Modern UI: A beautiful and responsive UI built with Jetpack Compose and Material 3 Expressive, supporting Dynamic Color and dark/light themes.
  • Music Library: Organize and browse your music by songs, albums, and artists.
  • Widget: Control your music from the home screen with a Glance-based app widget.
  • Tag Editor: Edit song metadata (title, artist, album, etc.) with the built-in tag editor.
  • AI-Powered Features: Explore advanced features powered by Gemini for a unique listening experience.

🛠️ Tech Stack & Architecture

  • Language: 100% Kotlin
  • UI: Jetpack Compose for a declarative and modern UI.
  • Audio Playback: Media3 (ExoPlayer) for robust audio playback.
  • Architecture: MVVM (Model-View-ViewModel) with a reactive approach using StateFlow and SharedFlow.
  • Dependency Injection: Hilt for managing dependencies.
  • Database: Room for local database storage.
  • Background Processing: WorkManager for background tasks like syncing the music library.
  • Asynchronous Operations: Kotlin Coroutines & Flow for managing asynchronous operations.
  • Networking: Retrofit for making HTTP requests.
  • Image Loading: Coil for loading and caching images.
  • Metadata: JAudioTagger for reading and writing audio file metadata.
  • Audio Processing: Amplituda for audio processing and waveform generation.

🚀 Getting Started

To get a local copy up and running, follow these simple steps.

Prerequisites

  • Android Studio Iguana | 2023.2.1 or newer.
  • Android SDK 29 or newer.

Installation

  1. Clone the repo
    git clone https://github.com/theovilardo/PixelPlay.git
  2. Open the project in Android Studio.
  3. Let Gradle sync and download the required dependencies.
  4. Run the app on an emulator or a physical device.

📂 Project Structure

The project follows the standard Android app structure, with a few key directories:

app/src/main/java/com/theveloper/pixelplay/
├── data
│   ├── local       # Room database, DAOs, and entities.
│   ├── remote      # Retrofit services for any network calls.
│   ├── repository  # Repositories that abstract data sources.
│   └── service     # The MusicService for background playback.
├── di              # Hilt dependency injection modules.
├── domain          # Use cases and domain models (if any).
├── presentation    # UI-related classes.
│   ├── components  # Reusable Jetpack Compose components.
│   ├── navigation  # Navigation graph and related utilities.
│   ├── screens     # Composable screens for different parts of the app.
│   └── viewmodel   # ViewModels for each screen.
├── ui
│   ├── glancewidget # Glance App Widget implementation.
│   └── theme       # App theme, colors, and typography.
└── utils           # Utility classes and extension functions.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages