Subscription Platform · 2025 · Live
Music Streaming Platform
role
Full stack engineer

A subscription music platform serving listeners, artists and an admin team from a single MERN stack. Listeners stream a curated catalog and build playlists; the team manages releases, artist profiles and plan entitlements from a purpose-built internal dashboard - all without touching the codebase.
the problem
Streaming products fail on two predictable things: audio that resets when the user navigates, and a subscription state that quietly drifts out of sync with what the user can actually access.
what I built
Audio player state lifted above the router so navigation never interrupts playback. A single entitlement record computed from every Stripe billing event - upgrades, renewals, failures and cancellations all resolve into one authoritative source.
architecture
React SPA with persistent audio player mounted outside the route tree - queue and state survive navigation Node.js / Express REST API with JWT auth and RBAC across listener, artist and admin roles MongoDB schemas modelled around playlists, releases and computed subscription entitlements Stripe subscription webhooks processed into one authoritative entitlement record per user Signed, short-lived media URLs preventing hotlinking and unauthorized stream access Admin dashboard: artist CRUD, release scheduling, media uploads, plan management, user controls DigitalOcean deployment with Nginx reverse proxy, PM2, SSL and Cloudflare caching layer
Engineering highlights
01
Playback that never resets
The audio player mounts once, above the router. Navigating the catalog, switching playlists or opening account settings never re-buffers a track or loses queue state.
02
One entitlement record, always correct
Every Stripe event - upgrade, renewal, failure, cancellation - resolves into a single computed access record. No scattered boolean flags, no billing-state drift.
03
Team-owned catalog tooling
The internal dashboard covers artist uploads, artwork, release scheduling and RBAC-gated admin controls. The team ships music without a developer in the loop.