Side project · 2026

Side B

Music discovery, simplified. One album a day that you review and save to your shelf. Built in one weekend.

Tools + Tech

Claude CodeClaude Code
ReactReact
ViteVite
OGL (WebGL)
Spotify Web APISpotify Web API
Spotify Web Playback SDKSpotify Web Playback SDK
OAuth 2.0 (PKCE)
Context

Side B is a Spotify-connected web app built around one idea: one album a day.

Each day it serves a single album, the same for every listener, meant to be played start to finish. Once you've heard it all the way through, you can review it and save it to your shelf, a growing collection of the records you've actually finished.

It has three parts: an animated opening screen, a Today view for the day's album with in-browser playback and a live tracklist, and the shelf, a 3D gallery of everything you've listened to.

Problem

We have traded a lot for convenience.

Streaming gave us instant access to nearly all recorded music, but it optimised away the friction that used to surround listening: choosing a record, holding it, sitting with it front to back, building a shelf of things you'd chosen. Those frictions were never just friction, they were how we paid attention.

Now infinite choice and algorithmic feeds make music feel disposable. You skip after thirty seconds, let a playlist decide, and rarely experience an album as a complete work.

Solution

Side B brings intention back to listening by reintroducing constraint.

It is opinionated by design: you can't skip tracks, you can't jump back, and you can only review an album once you've listened the whole way through. The friction is the point. Albums you finish are added to the shelf, a collection you build over time and walk back through, the digital echo of a record shelf. The whole interface treats listening as something you show up for rather than something that happens in the background, which is where the name comes from: a record has a Side B, and you have to choose to flip it.

I'm aware of the irony. This is a digital app trying to recover something digital convenience took away. It can't return the weight of a record in your hands, but it can return the ritual around it: a deliberate choice, a full listen, a collection you build.

Implementation

I built Side B in a weekend with Claude Code. Here's how it's implemented:

  • React + Vite single-page app, with react-router handling the Today, Shelf, and opening screens.
  • Spotify Web API powers the data layer. It retrieves the daily album and its metadata (cover art, title, artist, release year, and full tracklist) and reports live playback state (current track, position) to keep the UI in sync.
  • Spotify Web Playback SDK turns the browser tab into a playable Spotify device, so audio streams in-page on desktop with no separate app needed.
  • OAuth 2.0 (PKCE) handles authentication and authorizes both the API and the player.
  • Two hand-built WebGL scenes using OGL: the opening screen maps album covers onto a slowly rotating 3D cylinder, and the Shelf is a depth gallery of translucent panels receding on a tilted plane.