{"id":45015266,"url":"https://github.com/theovilardo/PixelPlayer","last_synced_at":"2026-02-28T07:00:52.727Z","repository":{"id":312475414,"uuid":"987110251","full_name":"theovilardo/PixelPlayer","owner":"theovilardo","description":"privacy-first Android music player built with Material 3 Expressive. Play offline, sync lyrics, fine-tune with equalizer presets, and cast to your devices.","archived":false,"fork":false,"pushed_at":"2026-02-27T16:57:03.000Z","size":26675,"stargazers_count":3004,"open_issues_count":373,"forks_count":220,"subscribers_count":33,"default_branch":"master","last_synced_at":"2026-02-27T17:16:01.726Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theovilardo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-20T15:33:18.000Z","updated_at":"2026-02-27T17:02:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"31545336-94f9-4b95-8be2-410e71b7b6bc","html_url":"https://github.com/theovilardo/PixelPlayer","commit_stats":null,"previous_names":["theovilardo/pixelplay","theovilardo/pixelplayer"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/theovilardo/PixelPlayer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovilardo%2FPixelPlayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovilardo%2FPixelPlayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovilardo%2FPixelPlayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovilardo%2FPixelPlayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theovilardo","download_url":"https://codeload.github.com/theovilardo/PixelPlayer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theovilardo%2FPixelPlayer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29927172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"online","status_checked_at":"2026-02-28T02:00:07.010Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-19T01:00:33.228Z","updated_at":"2026-02-28T07:00:52.721Z","avatar_url":"https://github.com/theovilardo.png","language":"Kotlin","funding_links":[],"categories":["others","Table of Contents"],"sub_categories":["Audio Player"],"readme":"# PixelPlayer 🎵\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/icon.png\" alt=\"App Icon\" width=\"128\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA beautiful, feature-rich music player for Android\u003c/strong\u003e\u003cbr\u003e\n  Built with Jetpack Compose and Material Design 3\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshot1.jpg\" alt=\"Screenshot 1\" width=\"200\" style=\"border-radius:26px;\"/\u003e\n  \u003cimg src=\"assets/screenshot2.jpg\" alt=\"Screenshot 2\" width=\"200\" style=\"border-radius:26px;\"/\u003e\n  \u003cimg src=\"assets/screenshot3.jpg\" alt=\"Screenshot 3\" width=\"200\" style=\"border-radius:26px;\"/\u003e\n  \u003cimg src=\"assets/screenshot4.jpg\" alt=\"Screenshot 4\" width=\"200\" style=\"border-radius:26px;\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/theovilardo/PixelPlayer/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/v/release/theovilardo/PixelPlayer?include_prereleases\u0026logo=github\u0026style=for-the-badge\u0026label=Latest%20Release\" alt=\"Latest Release\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/theovilardo/PixelPlayer/releases\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/downloads/theovilardo/PixelPlayer/total?logo=github\u0026style=for-the-badge\" alt=\"Total Downloads\"\u003e\n    \u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Android-10%2B-green?style=for-the-badge\u0026logo=android\" alt=\"Android 10+\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Kotlin-100%25-purple?style=for-the-badge\u0026logo=kotlin\" alt=\"Kotlin\"\u003e\n\u003c/p\u003e\n\n---\n\n## ‼️ DISCLAIMER\n- No fork of this project will recieve support, if you use a fork, ask the forker to support you.\n\n---\n\n## ✨ Features\n\n### 🎨 Modern UI/UX\n- **Material You** - Dynamic color theming that adapts to your wallpaper\n- **Smooth Animations** - Fluid transitions and micro-interactions\n- **Customizable UI** - Adjustable corner radius and navigation bar settings\n- **Dark/Light Theme** - Automatic or manual theme switching\n- **Album Art Colors** - Dynamic color extraction from album artwork\n\n### 🎵 Powerful Playback\n- **Media3 ExoPlayer** - Industry-leading audio engine with FFmpeg support\n- **Background Playback** - Full media session integration\n- **Queue Management** - Drag-and-drop reordering\n- **Shuffle \u0026 Repeat** - All playback modes supported\n- **Gapless Playback** - Seamless transitions between tracks\n- **Custom Transitions** - Configure crossfades between songs\n\n### 📚 Library Management\n- **Multi-format Support** - MP3, FLAC, AAC, OGG, WAV, and more\n- **Browse By** - Songs, Albums, Artists, Genres, Folders\n- **Smart Artist Parsing** - Configurable delimiters for multi-artist tracks\n- **Album Artist Grouping** - Proper album organization\n- **Folder Filtering** - Choose which directories to scan\n\n### 🔍 Discovery \u0026 Organization\n- **Full-text Search** - Search across your entire library\n- **Daily Mix** - AI-powered personalized playlist based on listening habits\n- **Playlists** - Create and manage custom playlists\n- **Statistics** - Track your listening history and habits\n\n### 🎤 Lyrics\n- **Synchronized Lyrics** - LRC format via LRCLIB API\n- **Lyrics Editing** - Modify or add lyrics to your tracks\n- **Scrolling Display** - Follow along as you listen\n\n### 🖼️ Artist Artwork\n- **Deezer Integration** - Automatic artist images from Deezer API\n- **Smart Caching** - Memory (LRU) + database caching for offline access\n- **Fallback Icons** - Beautiful placeholders when images unavailable\n\n### 📲 Connectivity\n- **Chromecast** - Stream to your TV or smart speakers\n- **Android Auto** - Full Android Auto support for in-car playback (Soon)\n- **Widgets** - Home screen control with Glance widgets\n\n### ⚙️ Advanced Features\n- **Tag Editor** - Edit metadata with TagLib (MP3, FLAC, M4A support)\n- **AI Playlists** - Generate playlists with Gemini AI\n- **Audio Waveforms** - Visual representation with Amplituda (Soon)\n\n---\n\n## 🛠️ Tech Stack\n\n| Category | Technology |\n|----------|------------|\n| **Language** | [Kotlin](https://kotlinlang.org/) 100% |\n| **UI Framework** | [Jetpack Compose](https://developer.android.com/jetpack/compose) |\n| **Design System** | [Material Design 3](https://m3.material.io/) |\n| **Audio Engine** | [Media3 ExoPlayer](https://developer.android.com/guide/topics/media/media3) + FFmpeg |\n| **Architecture** | MVVM with StateFlow/SharedFlow |\n| **DI** | [Hilt](https://dagger.dev/hilt/) |\n| **Database** | [Room](https://developer.android.com/training/data-storage/room) |\n| **Networking** | [Retrofit](https://square.github.io/retrofit/) + OkHttp |\n| **Image Loading** | [Coil](https://coil-kt.github.io/coil/) |\n| **Async** | Kotlin Coroutines \u0026 Flow |\n| **Background Tasks** | WorkManager |\n| **Metadata** | [TagLib](https://github.com/nicholaus/taglib-android) |\n| **Widgets** | [Glance](https://developer.android.com/jetpack/compose/glance) |\n\n---\n\n## 📱 Requirements\n\n- **Android 11** (API 30) or higher\n- **4GB RAM** recommended for smooth performance\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Android Studio Ladybug | 2024.2.1 or newer\n- Android SDK 29+\n- JDK 11+\n\n### Installation\n\n1. **Clone the repository**\n   ```sh\n   git clone https://github.com/theovilardo/PixelPlayer.git\n   ```\n\n2. **Open in Android Studio**\n   - Open Android Studio\n   - Select \"Open an Existing Project\"\n   - Navigate to the cloned directory\n\n3. **Sync and Build**\n   - Wait for Gradle to sync dependencies\n   - Build the project (Build → Make Project)\n\n4. **Run**\n   - Connect a device or start an emulator\n   - Click Run (▶️)\n\n---\n\n## ⬇️ Download\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/theovilardo/PixelPlayer/releases/latest\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png\" alt=\"Get it on GitHub\" height=\"60\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.theveloper.pixelplay%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Ftheovilardo%2FPixelPlayer%22%2C%22author%22%3A%22theovilardo%22%2C%22name%22%3A%22PixelPlayer%22%2C%22supportFixedAPKURL%22%3Afalse%7D\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png\" alt=\"Get it on Obtainium\" height=\"50\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## 📂 Project Structure\n\n```\napp/src/main/java/com/theveloper/pixelplay/\n├── data/\n│   ├── database/       # Room entities, DAOs, migrations\n│   ├── model/          # Domain models (Song, Album, Artist, etc.)\n│   ├── network/        # API services (LRCLIB, Deezer)\n│   ├── preferences/    # DataStore preferences\n│   ├── repository/     # Data repositories\n│   ├── service/        # MusicService, HTTP server\n│   └── worker/         # WorkManager sync workers\n├── di/                 # Hilt dependency injection modules\n├── presentation/\n│   ├── components/     # Reusable Compose components\n│   ├── navigation/     # Navigation graph\n│   ├── screens/        # Screen composables\n│   └── viewmodel/      # ViewModels\n├── ui/\n│   ├── glancewidget/   # Home screen widgets\n│   └── theme/          # Colors, typography, theming\n└── utils/              # Extensions and utilities\n```\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/theovilardo\"\u003etheovilardo\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheovilardo%2FPixelPlayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheovilardo%2FPixelPlayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheovilardo%2FPixelPlayer/lists"}