$ show shub39/Rush
Rush is a cross-platform lyrics application built with Kotlin Multiplatform and Compose Multiplatform, targeting Android, iOS, and Desktop (JVM). Its primary function is to search for, display, and share synced lyrics (line-synced and syllable-synced) from multiple sources including LrcLib, Genius, and a custom LyricsPlus API. The app integrates with the system's media playback to auto-detect the currently playing song and fetch matching lyrics. Notable features include romanization of lyrics for non-Latin scripts (Japanese, Korean, Hindi, Punjabi, Cyrillic) via a dedicated Android library, customizable visualizers (wave, gradient, hypnotic) for lyrics backgrounds, and a variety of share card styles (Spotify, Rushed, Brat, etc.). The architecture follows MVVM with Koin for dependency injection, Room for local persistence, DataStore for preferences, and Ktor for networking. The codebase is well-modularized with shared core, logic, and UI modules, though significant parts of iOS and Desktop support remain stubbed or incomplete.
The LLM identified 2 files worth highlighting for reuse:
A pure Kotlin parser for TTML (Timed Text Markup Language) that extracts syllable-level timestamps from XML formatted lyrics. It uses regular expressions to handle both standard TTML and malformed input gracefully, producing a list of ParsedWord objects with start and end times. This component is self-contained (no external dependencies beyond standard library) and could be reused in any project requiring TTML subtitle or lyrics parsing.
A comprehensive romanization library supporting Japanese, Korean, Hindi, Punjabi, and multiple Cyrillic languages (Russian, Ukrainian, Serbian, etc.). It combines ICU transliterators, custom dictionary lookups (e.g., Japanese kanji readings from a bundled TSV file), and Hangul syllabic decomposition for Korean. The library is packaged as a separate Android module with extensive unit tests, making it directly reusable in other Android projects needing multilingual text romanization.