$ show maxrave-dev/SimpMusic
SimpMusic is a production-grade Kotlin Multiplatform music player for Android and desktop (JVM) that streams from YouTube Music's undocumented backend. The codebase is organized around a shared Compose Multiplatform UI module (composeApp), Android entry points (androidApp), a desktop entry point (desktopApp), and optional feature modules for Google Cast, Last.fm scrobbling, and crash reporting. A separately referenced core submodule supplies domain and media-service logic. Internally it uses MVVM with Koin dependency injection, Repository interfaces backed by Room entities and DataStore, StateFlow-based ViewModels, and a large custom Compose component library covering home feed, library management, playlist sync, fullscreen player, lyrics, equalizer, podcasts, Android home-screen widgets, and a desktop mini-player. The app is shipped as a packaged consumer application with Play Store metadata, GitHub Actions, fastlane changelogs, and build variants that swap real integrations for empty stubs in FOSS builds.
The LLM identified 4 files worth highlighting for reuse:
A Coil image-loading interceptor implementing network-first caching with TTL expiration, stale-while-revalidate behavior, and staged cache keys. The implementation is accompanied by a unit test and is isolated enough to be extracted into any Coil-based image pipeline.
Parses word-level rich-synced lyrics timestamps, handling variable fraction-digit formats, HTML entity decoding, and fallback to line-synced lyrics. This is a self-contained parser with non-obvious edge-case handling that could be reused by LRC and lyrics tooling.
A small pure-Kotlin semantic version parser and comparator used for update checks and promotional gating. It has no internal app dependencies and can be lifted directly into other Kotlin projects.
A self-contained Last.fm API client in a dedicated multiplatform module, handling web authentication, session persistence, request signing, and scrobble/now-playing/loved-track methods. Because it lives in its own module and is not coupled to the UI layer, it can be reused as a standalone Last.fm integration library.