Swar
A warm, local-first music player for Android.
Why it exists
01MElo proved that a web app could play music, but it also showed the limits of the browser: background playback is fragile, downloads are awkward, and the whole thing feels like a website in a costume.
Swar is the native rebuild. It keeps the warm editorial interface I wanted and moves playback, library and downloads into Android's media stack.
Recorded 2026
Kaushambi, India
The constraints
02- 01Android 8 and above, including cheap phones with aggressive background limits.
- 02The JioSaavn endpoint is unofficial and can change without notice.
- 03A personal build, not a Play Store release.
- 04No budget for a music catalogue licence.
The approach
03Use Media3 properly
Playback runs in a MediaSessionService with a persistent notification and lockscreen controls. The UI observes the player rather than owning it, so navigation does not interrupt audio.
Local library as the source of truth
Downloaded and on-device tracks live in Room. Streaming results are cached metadata, not treated as permanent library entries.
Design for one hand
The player is built around a thumb-reachable transport bar and a queue sheet. No hidden gestures that require a second hand.
What it actually does
04- 01Background playback with lockscreen and notification controls.
- 02On-device music library.
- 03JioSaavn search and streaming.
- 04Downloads for offline listening.
- 05Queue management and recently played.
Technical notes
05Kotlin and Compose, with Media3's ExoPlayer underneath. Hilt handles dependency wiring; Room stores the local library and download state. The app is modular so playback, catalogue and UI can change independently.
The current release build is 18.2MB. It is a personal APK and is not distributed publicly.
- Role
- Design, Android development, playback architecture
- Year
- 2026
- Platform
- Android
- Stack
- Kotlin, Jetpack Compose, Media3, ExoPlayer, Room, Hilt, JioSaavn API
- Status
- In progress
Honest limits
06- 01The streaming endpoint is unofficial and may break.
- 02No gapless playback yet.
- 03Android only; there is no desktop or iOS build.
- 04The APK is a personal build, not a signed store release.
What it taught me
07“Media apps are judged by what happens when the screen is off. Most of the work was in the service, notification and audio focus, not the pretty player screen.”