Background
SoundVent Persistent Music Player

SoundVent Persistent Music Player

A unified audio system powering continuous playback across the entire SoundVent platform — a singleton audio engine that keeps music playing seamlessly as users browse profiles, scroll feeds, and explore the marketplace.

Next.js
React
Zustand
Web Audio API
TypeScript
TailwindCSS
HTML5 Audio

Context

SoundVent couldn't behave like a normal website where audio stops on every navigation — it needed continuous, app-like playback, and that required a single, unified audio system and UI instead of scattered, page-bound players.

Solution

I built a platform-level audio system that owns playback, queues, and UI interactions from a single, persistent engine so no matter where users go in the app, their music keeps playing and the player behaves consistently.

Architecture

A true singleton audio engine, wired into a global store and persistent layout, keeps playback alive across routes while powering queues, controls, and visualizations, and event-driven syncing and a shared analyzer node make the player both responsive and extensible.

UI/UX

The player presents a bottom-anchored bar with an expandable, artwork-rich view, queue controls, and live visualizations — always available but never in the way, and it feels like a native streaming control center that travels with you across the entire platform.

Challenges & Solutions

The player had to maintain continuous playback, avoid duplicate engines, stay perfectly in sync with the UI, power visualizations safely, and remain performant, and I solved this with a persistent layout, strict singleton pattern, event-driven store updates, a single analyzer node, and carefully optimized rendering.

Impact

The persistent player became one of SoundVent’s signature features, turning browsing into a continuous listening session and reinforcing the platform’s identity, and it also proved out a scalable pattern for platform-wide engines that other core features can follow.

SaaS
Music
Audio Player
State Management
Next.js
React
Web Audio