x:0 y:0 Overview / 01
Project · Family game

Music Bingo

A music bingo card, a playlist, a host screen full of videos. Built one weekend because nothing off the shelf was quite right.

Music Bingo is a small game and a small piece of software. You load a playlist. Everyone at the table gets a randomized card of song titles. The host plays the music video on the big screen. When a song matches a cell on your card, you mark it. First full row wins.

The first version was music only: a Spotify shuffle and a printed list of songs in our living room. The newer version adds YouTube, so the host screen can play the videos while everyone watches, listens, sings along, and plays bingo at the same time. It feels more like a party game now, not just a playlist with cards.

The bar for useful family software can be set honestly low. Music Bingo went from idea to playable in the kitchen in one afternoon. That is the real point.

MB / GAME LOOP HOST hits play PLAYLIST spotify · youtube videos PLAYER anyone at the table CARD randomized, fair MATCH cell struck · round ends N
Host picks playlist. Player marks card. Match fires. Round ends. Loop restarts.
x:780 y:0 Play / 02
Try it

A playable card

Click a cell to mark or unmark. Center is free.

Dancing Queen
Brown Eyed Girl
Come On Eileen
Sweet Caroline
Mr. Brightside
Livin' on a Prayer
Don't Stop Believin'
September
Take On Me
I Want It That Way
Hey Ya!
Wonderwall
Free
Shake It Off
Single Ladies
Uptown Funk
Mamma Mia
Piano Man
Hey Jude
Use Somebody
Africa
Valerie
Tiny Dancer
Cruel Summer
Somebody to Love

That is the whole game. The real version has playlists, a host view, and a shuffle button. This card is the entire proof.

x:780 y:840 Stack / 03
Under the hood

How it's built

Next.js on Vercel. Supabase for real-time sync and auth. Spotify Web Playback SDK for Spotify audio; YouTube Data API for video playback. Two separate playback implementations with no abstraction layer between them, the cleaner choice when the two paths have genuinely different constraints. That split is what lets the game run in three different modes.

The interesting engineering decision is the fairness-biased card generator. Without it, the same songs cluster on everyone's cards, and some cards are nearly impossible. The generator tracks song usage across rounds and prioritizes unused tracks when shuffling each player's pool. Small mechanism, big quality-of-life improvement.

RuntimeNext.js / Vercel
SyncSupabase Realtime
MusicSpotify SDK + YouTube API
x:0 y:980 Modes / 04
Three ways to run a round

Three modes of play.

You pick the mode before the round, depending on what playlists you already have and whether the table wants videos on the screen.

MODES / 3 SOURCE PLAYS AS MODE 01 SPOTIFY PLAYLIST via Spotify SDK AUDIO MUSIC ONLY MODE 02 SPOTIFY PLAYLIST matched to YouTube VIDEO OFFICIAL YT VIDEOS MODE 03 YOUTUBE PLAYLIST direct VIDEO NATIVE YT VIDEOS

Mode 01 · Spotify, music only

Bring a Spotify playlist. Host plays straight through the Spotify Web Playback SDK. Audio only, no video on the screen. The simplest setup and the closest to classic party bingo. Needs a Spotify Premium account on the host side.

Mode 02 · Spotify, matched to YouTube videos

Bring a Spotify playlist. Music Bingo maps each track to its YouTube video, building a YouTube video list from your Spotify source. The host plays the videos instead of the audio stream. Bigger energy, better singalongs, and you keep your Spotify source without curating a separate video playlist.

Mode 03 · YouTube, videos direct

Skip Spotify entirely. Bring a YouTube playlist of music videos and the host plays from there directly. No Spotify account required. Usually the right call for a mixed crowd where not everyone is on the same streaming service.

x:0 y:1740 Access / 05
Family game nights

Where it lives

Music Bingo runs as a small web app. No install, no account. Load a playlist, print as many cards as you need, hit play. If you want to try it at a family game night of your own, it is a single link.

Runs onAny modern browser
Players2 and up, no upper limit
SetupAbout two minutes
next dragpan 0fit all Eschome
Want to reach out? X is best.
linkedin x / @dpersek github / syntaxsawdust