JS
← Back

03 / Personal project

VoiceBox DJ

A karaoke queue manager that pulls songs from individual singers' personal queues to keep the room rotation fair. Built for a problem I actually had.

Role Solo / Personal
Year Original · ongoing rebuild 2026
Status Active

The problem

My favorite karaoke spot in Portland — VoiceBox — has an open API but their default room software has a known failure mode: queue bombing. One enthusiastic singer can stack the queue with five songs in a row while everyone else waits. Their software treats the room queue as a flat list. The right mental model is a round-robin across each singer's personal queue.

What I built

A web app that lets each singer maintain a personal queue and assembles the room playlist by rotation. Everyone sings one song before anyone sings twice. Personal queues, favorites, and history are tracked per singer, so coming back to the booth picks up where you left off.

Original stack

Angular frontend, Java backend, Couchbase for the document store, deployed to Heroku. A small audience, but it worked — fair rotation became the default for a friend group I sang with regularly.

2026 rebuild

I resurrected the project recently. The new stack is on AWS — ECS running on EC2, with Terraform managing the infrastructure as code. The UI is being ported to React. The interesting addition: a realtime recommendation engine that pulls from the room's current queue, individual singer histories, and Spotify's song metrics API to suggest songs that fit the room's mood.

It's a small audience, a niche problem, and a project that exists mostly because the friction of queue bombing was annoying enough to fix. Some of the best engineering I've done has been on problems that small.