Resonate / Product engineering

Building a place tolisten to albumstogether.

I designed and built Resonate, a live social music platform centred on shared album listening rather than passive music logging.

Creator & Product Engineer · October 2025 — present

Visit Resonate
registered users
~200
ratings submitted
4,000+
API routes
25+
paid acquisition
0
Resonate landing page with the headline Your music, your take and a wall of album covers
The public landing page. Resonate launched in November 2025.

01Problem

The shared listening occasion disappeared.

Streaming made nearly every album instantly available. It also made listening increasingly solitary. Most music products are good at recording what already happened: an album was played, rated or added to a list.

I wanted the product to create a reason to listen, not only preserve a record of it afterwards.

The club creates the occasion. The catalogue preserves what happened there.

02The club

A listening club with a catalogue attached.

The recurring Listening Club creates a shared album pick and a common listening window. Members listen, react, rate and discuss the same release around the same time. Their responses then become part of the wider catalogue.

A normal rating product answers, “What did this person think of this album?” Resonate also asks, “What did this group think while they were listening to it together?”

Resonate Listening Club pick page showing the shared album, ratings, reactions and curator note
A completed Listening Club pick brings the shared album, reactions, ratings and listening links into one occasion.

03Scope

What I built

Resonate extends beyond the club without losing sight of it. The surrounding product gives each listening occasion context, identity and somewhere to persist.

My role: product direction, frontend, backend, database design, APIs, infrastructure, deployment and user support.

Catalogue
Albums, search, metadata, ratings, written reviews and track data.
Social
Profiles, follows, activity, user-made lists and pinned albums.
Community
Listening Club picks, shared listening windows, reactions and group ratings.
Communication
Direct and group conversations, persistent history, unread state and read receipts.
Resonate Discover Lists page showing community-made album collections
Community lists turn individual taste into browsable, shared collections.

04Architecture

Architecture that I operate end to end.

The application runs on Vercel. Next.js handles interface and server logic, PostgreSQL remains the source of truth, and Supabase supplies auth and real-time delivery. Scheduled work announces each club pick by email.

Users reach a Next.js and React application on Vercel. Its API and server logic use Supabase Auth with PostgreSQL, Supabase Realtime, and the external Spotify and MusicBrainz services. Scheduled jobs trigger email delivery.

05Hard part

Real-time messaging is a state problem.

Direct and group conversations combine persistent messages, membership, ordering, unread state, read receipts and real-time delivery. PostgreSQL is the durable source of truth; Supabase Realtime moves changes through the live interface.

The hard part was not getting a message to appear. It was keeping local and persisted state reliable when events arrive out of order, connections recover, or several views need to agree about what has been read.

The feature works in production today, although it remains one of the systems I continue to improve.

06Migration

Moving album identity beyond Spotify.

The MVP treated Spotify as the main source of album identity. That accelerated the first release, but it also made Resonate’s catalogue depend on another platform’s identifiers and data model.

I am migrating canonical album identity toward MusicBrainz. Spotify, and eventually Apple Music or other services, can then become integrations and destinations instead of the definition of the catalogue itself.

Spotify as identityResonate catalogueMusic services as integrations
Resonate album page for In Rainbows with track data, rating controls and Spotify integration
The album page combines Resonate-owned ratings and reviews with external listening destinations.

07Positioning

The product decision is intentionality.

Resonate is differentiated by the context it creates, not by claiming other music products are wrong. Each one starts from a different social behaviour.

RateYourMusic
Archival and catalogue-oriented
Musicboard
Asynchronous music logging
Airbuds
Passive social listening presence
Resonate
Intentional shared album listening

08Users

Real users changed the work.

Resonate launched after roughly one month, with nearly all initial users coming from one organic Musicboard post. Feedback and production behaviour now drive the next iteration.

Resonate profile showing identity, social links, follower counts and a pinned album
A profile connects taste, identity, the social graph and a pinned record.

09Method

Agents accelerate the loop. Ownership stays with me.

I use Claude Code, Codex, ChatGPT, Claude and T3 Code for implementation, debugging, exploration and refactoring. I still own the problem definition, architecture, review, testing and production result.

  1. 01 Define
  2. 02 Implement
  3. 03 Run
  4. 04 Test
  5. 05 Inspect
  6. 06 Debug
  7. 07 Revise
  8. 08 Deploy

Agent output is never treated as finished simply because it compiles.

10Role

Creator & Product Engineer

I took Resonate from the initial product idea through production deployment, and continue to operate it.

Owned

  • Product direction
  • UX and interface design
  • Frontend and backend
  • API and database design
  • Integrations and infrastructure
  • Deployment and scheduled jobs
  • Debugging and user support
  • Production iteration

Stack

Frontend
Next.js · React · TypeScript
Data
PostgreSQL · Supabase · Supabase Auth
Realtime
Supabase Realtime
Music data
Spotify API · MusicBrainz
Infrastructure
Vercel · CI/CD · scheduled jobs · email