This is ongoing client work, so screenshots are left out. Here is what I built for each part of the product.
- Built from scratch, lead since Nov 2024
- Playlists, mixes & waveform review
- Direct-to-S3 audio uploads
- Live curator ↔ listener chat
- Scheduling, articles, invoicing, promo images
- First push of the Next.js rebuild
- Live radio, schedule, archive & search
- One player bar, Chromecast & AirPlay
- Google/Apple sign-in, My ROVR library
- 2026 redesign, Datadog RUM, SEO
The story
Since November 2024 I have worked with ROVR as a long-term freelancer.
Dashboard (dash.rovr.live). I started the project and still lead it. It is the tool admins, managers and curators use to run the station: build and reorder playlists and mixes, upload audio straight to S3, review mixes on a waveform player, schedule shows, chat live with listeners, publish articles, generate social promo images and handle curator invoicing, all behind role-based access driven by the backend.
Website (rovr.live). I made the first push of the Next.js rebuild and built the live radio home, schedule, archive and archive search, the show and SoundCloud players, and later a single player bar for radio, archive and moods with Chromecast and AirPlay casting, Google/Apple sign-in, Datadog monitoring and the 2026 redesign.
Engineering highlights
Dashboard built from scratch
React + TypeScript with Redux Toolkit and React Query, feature flags, Conventional Commits, versioned releases and CI. About 85% of its 1,190 commits.
Waveform mix review
A wavesurfer.js player drawn from a binary waveform file with zoom, synced scrolling and active-track tracking from stitched metadata cues.
Direct-to-S3 audio pipeline
Presigned uploads with progress and cancel, metadata extraction through the gateway API and HEIC conversion for artwork.
Live curator chat
Listener-to-curator messaging on Amazon IVS Chat and Amplify Events, migrated with a dual-run off the old events room, with AI moderation and block/delete.
Streaming & casting on the web
HLS live and mood streams, one player bar for every source, Chromecast and AirPlay, and precise seeking on the archive.
Observability & SEO
Datadog RUM and logs, GA with a persistent user id, dynamic sitemaps with structured data and a faster share-card path for Open Graph images.
