Streamers on Twitch and YouTube want to show viewers what song is currently playing, but existing Spotify overlay solutions were either unreliable, ugly, or required complex setup. There was no clean, drop-in widget that just worked with OBS and Streamlabs.
What I Built
Beatcaster is a web-based widget that connects to a streamer's Spotify account and displays the current track as a real-time overlay in OBS or Streamlabs. It's designed to be visually polished and zero-friction to set up:
Real-time track display showing song title, artist, and album art as it changes
Smooth animations on track transitions using Motion (Framer Motion)
One-click OBS integration via browser source URL
OAuth flow for secure Spotify account connection
Customizable appearance to match different stream aesthetics
Technical Architecture
Built on Next.js with TypeScript, the app handles Spotify OAuth and token refresh on the server side, then pushes real-time track updates to the browser source widget.
The database layer uses PostgreSQL with Drizzle ORM for storing user sessions and Spotify tokens. The widget itself is a lightweight React component optimized for OBS browser source rendering, where performance matters because it shares resources with the game and stream encoder.
Motion (Framer Motion) handles the track transition animations, keeping them smooth even on lower-end streaming setups. The whole app is containerized with Docker and served behind Nginx for reliable self-hosting.
Key Technical Details
Spotify Web API integration with automatic token refresh
Server-sent events for real-time track updates without polling
Lightweight widget rendering optimized for OBS browser source constraints
Docker containerization for easy deployment
Open Source
Beatcaster is open source on GitHub, and streamers can self-host their own instance.
Real-time Spotify now-playing widget for OBS and Streamlabs. Smooth animations, one-click setup, and OAuth integration. Built with Next.js, TypeScript.