The desktop player, in my pocket

Resonance Mobile

Home: discovery playing, recent plays, playlists
Year
2026
Role
Solo developer
Status
In progress
Stack
React Native · Expo · Kotlin · SQLite · Supabase

Resonance on Android — the same database, the same recommender, the same cloud sync — with lock-screen playback and a native Kotlin module that finds the audio itself. The one I use every day.

01

Shared, not rewritten

The recommender and the sync engine are the desktop files, copied byte for byte by a script. Where desktop code calls into Rust through Tauri, a small shim answers the same commands on the phone — so a fix on one side is a fix on both. The SQLite schema is generated from the desktop migrations, and both sync through the same Supabase project with row-level security.

02

Finding the audio on the phone

There is no yt-dlp on Android, so a native Kotlin module built on NewPipeExtractor resolves streams, searches and builds radios on the device. ExoPlayer plays them in the background and on the lock screen, where voting on a track is one tap — karma is the whole point, so it has to be reachable without opening the app.

03

Under the hood

  • 01React Native and Expo with a dev client, NativeWind for styling
  • 02Sync guards: a membership whose track never reached the cloud gets a placeholder instead of being dropped silently
  • 03Stream quality that respects mobile data, and downloads for offline listening
  • 04English and Turkish throughout
Screens — 08
The player, with karma voting right under the title
01The player, with karma voting right under the title
Discover: a queue that explains every pick
02Discover: a queue that explains every pick
Up next, and why each track is there
03Up next, and why each track is there
Library: downloads, phone music, imports
04Library: downloads, phone music, imports
A playlist ranked by its own karma
05A playlist ranked by its own karma
The taste profile the recommender uses — editable
06The taste profile the recommender uses — editable
Year in review, built from local history
07Year in review, built from local history
Ambient mode for a phone on the desk
08Ambient mode for a phone on the desk
Next project
All in One Downloader
Message me on WhatsApp+90 541 365 99 01
Eren Semih YıldızLoading
Sound on · starts with your first tap
  1. 01Typefaces···
  2. 02Scene···
  3. 03Shaders···
  4. 04GPU upload···
  5. 05Screens···