Samgeet
Open-source Android music player ·Creator · design, app, backend
An open-source, ad-free music player for Android: up to 320 kbps streaming, offline downloads, mood-matched autoplay, on-device taste learning and a library that syncs across phones.
01 — What I built
- On-device taste profile that learns from likes, skips and completions and feeds a pure ranking recommender for autoplay
- Mood theme: the whole app recolours itself to the inferred mood of the current song
- Library sync across phones with merging (deletions included); the password is stretched with PBKDF2 on the phone, so the server only ever stores a hash
- Small PHP + MySQL backend with signed requests, session tokens and an admin panel for listening reports, app updates and in-app messages
- Short share links with Android App Links: they open straight in the app, with a web page as the fallback
- Equalizer with saved custom sounds, offline downloads, background playback with lock-screen controls, and voice control through Google Assistant and Bixby
02 — Why I built it
I wanted a music player without ads that still felt smart: good recommendations, a library on every phone I use and sound I could tune. Samgeet is that app, built end to end and released as open source under the MIT licence.
03 — How it is put together
The Flutter app is split into four layers: data (API client, models, library store, account sync, share links), engine (taste profile, a pure ranking recommender and candidate gathering), player (queue, autoplay refills, sleep timer, error recovery, equalizer) and UI. Keeping the recommender a pure function made it easy to unit-test offline.
04 — Privacy and accounts
Signing in needs only an email and a password. The password never leaves the phone: PBKDF2 with 150,000 rounds turns it into the account key and the server stores only a hash. Every API request is signed with a key built into release builds, so the server only answers the app, and each account can only reach its own data.
05 — Details that took the longest
Background playback had to survive the app being swiped away, with working lock-screen controls on Android 13+. A release-only bug, where the resource shrinker deleted the notification icons the audio plugin loads by name, was fixed with an explicit keep rule. The layout switches from a bottom bar to a side rail at 720 dp and was verified on phones and tablets in both orientations.
Next step
Building something similar?
Open to full-stack & backend engineering roles, remote or on-site. I usually reply within a day.