Skip to content
AlphaMergeCase study 06 — MicDropLive · our own product
Case study 06·Karaoke · live

MicDrop — the living room is the venue.

Karaoke split across two screens. A TV or laptop becomes the stage; every phone in the room is a controller. There is nothing to install and nothing to type — the stage puts a QR code on screen, and that is the entire join flow.

02
Kinds of screen
00
Installs to join
01
Shared queue
WS
Stage ↔ handsets
2

Two screens

Stage · handset

Karaoke on a laptop is one person hunched over a keyboard while everyone else waits. The split fixes the social problem before it touches the technical one: the big screen holds the lyrics, the queue and the room code, and the phones hold everything a person actually wants to do — search, queue a track, take the mic next. Nobody hands a laptop around, and nobody installs anything to sing one song at a party they were dragged to.

01Open the room on the TV — it becomes the stage
02Guests point a camera at the QR code on screen
03Songs are picked from the phone into a shared queue
04The stage plays; every handset sees the same running order
A dark landing page. On the left the MicDrop wordmark, the line “Your ultimate karaoke experience” and a Sign In button; on the right a “How it works” card numbering three steps, ending in a yellow “Create a Room” button.
The landing page says it in three steps: the room opens on the TV, guests scan the QR code on screen, and everyone queues songs from their own phone.
3

One room, in step

A room is a set of sockets that must agree on one running order. Every handset can add to it, the server keeps the order round-robin so nobody sings twice before anyone sings once, and the stage is the only screen that plays — shared state with many writers and one reader that matters. Socket events are validated before they are trusted and handled statelessly, decoupled from the transport, so a reconnecting phone rejoins a room rather than forking it.

Shared queue

One running order per room, written from any handset and rendered identically on every screen that is watching it.

Socket hygiene

Listeners are removed on disconnect and references to departed guests dropped, because a party app that leaks a Map entry per guest dies on the night it is busiest.

Nothing raw on the wire

Documents are never returned straight from the database — payloads are projected through DTOs, so internal fields cannot leak into a room full of strangers' phones.

4

Build

As deployed
ClientAngular 22 · Spartan UI · Tailwind · ngx-translate · installable PWA
ServerExpress · Socket.IO · GraphQL alongside REST · MongoDB
StructureContainer-injected services over a repository layer, keeping database work out of the socket handlers
In the roomThe stage code rotates every ten minutes · the room can applaud · performances earn points, and can be recorded · he · en · ru · uk
DeliveryDocker Compose · GitHub Actions · Google Cloud
StatusLive at micdrop.me

Easiest way to judge it is to open a room.

Put it on the nearest big screen and point a phone at the code. The join flow is the product.