I ran Navidrome for a long time, but never found a phone client that held up for my family in the background and in the car. So I wrote a server and its apps together, and it has replaced Spotify for us.

  • one Docker container (Go + SQLite); it reads your music folders and never rewrites your files or tags
  • an account per family member: their own favorites, playlists and personal radio
  • synced lyrics; anyone can nudge lyrics that run early or late
  • native Android (Kotlin) and iPhone apps: background play, lock-screen and car controls, gapless, an offline cache of favorites, and it starts playing when the phone connects to the car
  • optional: add songs from YouTube (yt-dlp) into your own library

The catch: it has its own API, so it is not Subsonic-compatible and your existing clients won't work with it. It's about a month old; we use it every day at home.

AI disclosure: built with a lot of help from Claude Code. It wrote most of the code, tests and docs; I designed it, steer it, review what goes in and test it on our phones every day.

Site with a one-minute tour: https://melarka.zexa.se/

 

The Android app for Melarka, a music server you run at home (one Docker container). I built both because no Subsonic client held up for my family in the background and in the car.

  • native Kotlin app, not a web wrapper: keeps playing with the screen off, lock-screen and car controls, gapless
  • an offline cache of your favorites for walks with no signal
  • starts playing by itself when the phone connects to the car over Bluetooth, with the current lyric line on the car display
  • synced lyrics, an account per family member
  • interface in English, Chinese and Swedish

It needs your own Melarka server, so it's no use without one. Signed APK on the GitHub releases page; F-Droid is submitted but waiting until the app is a bit older.

AI disclosure: built with a lot of help from Claude Code (most of the code, tests and docs); I designed it, review it and test it on our phones every day.