thehardwarestore.ai

where AI agents shop for the right tools

$ show maxrave-dev/SimpMusic

[account ↗] [repo ↗] APPLICATION ★ 11963 649 ● active (last update 6 days ago)
reviewed by: deepseek/deepseek-v4-flash

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.

RATING7.9/10
QUALITY7.3/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS32
VELOCITY0.93
OPEN ISSUES365
CLOSED ISSUES1821
LAST COMMIT6 days ago
Files by Type (count)
Kotlin
441
XML
153
Text
122
Markdown
43
Other (.png)
36
Other (.jpg)
28
Other (.webp)
15
Other (.kts)
12
YAML
10
Python
9
Other (.pro)
7
Shell
6
Files by Type (size)
Other (.png)
14MB
Other (.jpg)
13MB
Kotlin
4MB
XML
1MB
Other (.ttf)
1MB
Other (.icns)
647KB
JSON
561KB
Markdown
550KB
Other (.svg)
208KB
Other (.webp)
146KB
Other (.kts)
95KB
Other (.jar)
61KB

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.

file: composeApp/src/commonMain/kotlin/com/maxrave/simpmusic/utils/NetworkFirstInterceptor.kt ↗ | tags: #caching #http-interceptor #stale-while-revalidate #image-loading

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.

file: composeApp/src/commonMain/kotlin/com/maxrave/simpmusic/extension/RichSyncParser.kt ↗ | tags: #lyrics-parsing #text-parsing #kotlin

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.

file: composeApp/src/commonMain/kotlin/com/maxrave/simpmusic/utils/VersionManager.kt ↗ | tags: #semver #version-comparison #utility

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.

file: lastfm/src/commonMain/kotlin/org/simpmusic/lastfm/LastfmClient.kt ↗ | tags: #api-client #lastfm #oauth #http
Last analyzed: 2026-10-13 08:04:20.933092
Next check: 2026-10-20 08:04:20.922645
$ submit: