
The problem
A web player breaks the moment you change screens or lose signal. The goal was to keep the music going without packaging a native app.
What I built
I separated audio from the frontend: presigned R2 URLs, ID3 metadata processed on the backend and a global player mounted once. I added a PWA with the Cache API for downloads and the Media Session API for OS-level playback controls.


Global player, library and catalogue dashboard.
What changed
The platform includes an editable catalogue, ZIP album imports and offline playback.
- Persistent global player across pages.
- Offline downloads with PWA and Cache API.
- ZIP album imports and an editable catalogue.
The next one could be yours.
Tell me what you have in mind and I'll tell you whether I can help.
Available for new projects.