The Interlude
A closed-circle music sharing app for a small group of friends. One pick per 12 hours. Cross-platform links. Shared listening history.
The problem
Sharing music with friends is fragmented — Spotify links break on Apple Music, group chats lose the link a day later, and “what was that track you sent?” gets answered by scrolling iMessage. I wanted one quiet feed shared by a closed circle, where every pick was a universal link, and where the history of what we’d all played accumulated into something worth looking back at.
The approach
A private feed for a small group. Each member posts one pick per 12 hours — the cadence forces curation. Every link is Odesli-resolved, so a Spotify share opens in Apple Music on the listener’s side and vice-versa. The post enriches itself with album art, MusicBrainz metadata, and a Last.fm play count snapshot. Real-time updates flow over Supabase Realtime so the feed feels alive without polling.
The app grew sideways from the feed. /saved collects everyone’s saved posts and offers a Map toggle that plots them on the globe. /atlas is a wireframe globe of music history with hand-curated pins for birthplaces, scenes, labels, studios, and a time-slider that plays history forward. The artist catalog underneath the feed holds typed connections — influence, collaboration, genre-birth, genre-bridge — each edge with an editorial “why”. A weekly New Music Friday digest emails subscribers fresh releases from the followed-artist set.
How it works
React 19 + Vite 7 + Zustand on the frontend. A Hono-powered Cloudflare Worker proxies the client to Supabase Postgres, handles JWKS/ES256 auth verification on Supabase magic-link tokens, and brokers third-party APIs — Odesli for cross-platform link resolution, MusicBrainz and Last.fm for enrichment (cached in worker KV, written back to the DB), Apple Music via MusicKit for in-app playback. Realtime updates ride Supabase’s postgres_changes channel. New Music Friday entries lazy-fill their platform links via the worker on first read so the weekly cron stays cheap.
Results
- One feed, universal links — every pick is Odesli-resolved across Spotify, Apple Music, Bandcamp
- Real-time without polling — Supabase Realtime over postgres changes
- /atlas — wireframe globe of music history, chronological tour, Apple Music playback per pin
- /saved — collected listens with a Map toggle that plots them geographically
- New Music Friday — weekly email digest of fresh releases, enriched with Pitchfork + Bandcamp Daily + AOTY scores
- Curated artist graph — typed connections with editorial “why”, not algorithmic embeddings