havResonance and havResonance Proxy Released

July 20, 2026 · 2 min read

Last Friday I bought a couple of new albums from Bandcamp. Later that day I received an email from Bandcamp announcing support for the OpenSubsonic API to stream purchased music collections, with more details in the related Bandcamp blog post. I was hooked immediately. It was the perfect opportunity to build my own music player for my Bandcamp collection.

I started reading the OpenSubsonic API documentation right away. A day later I had a first working version of the player, which I called havResonance. At that point it could already browse my music collection, and a few hours later it could play music as well.

The project was a lot of fun to build because I also learned a few new things along the way, including how to create a proxy with Cloudflare Workers and how to use the browser's HTMLAudioElement API for music playback. The app itself is built with Angular and TypeScript, while Node.js is used for development and deployment tasks, including the Wrangler-based deployment of the Cloudflare Worker proxy.

Today I'm releasing version 0.1.0 of havResonance. It is still an early version, but it already covers the core listening workflow: browsing and searching albums, opening album pages, playing music, and managing the queue. You can find the source code for havResonance and havResonance Proxy on GitHub.