Skip to content
Live nowSeason 2 · Episode 15 · Agentic Coding Guide

Season 2 · Episode 7

Group Watch/Listen Party Sync

6 builds shipped in 30 minutes, live.

Listen on X ↗

The brief

Build a tool that lets a group watch or listen to something together in real time, even though everyone is in a different place. Playback needs to stay in sync across everyone in the group — someone plays, pauses, or skips, and it should reflect for the whole group, not just them. On top of sync, give the group a way to react together as it happens — live chat, emoji reactions, comments tied to a moment in the video/audio, whatever makes it feel like you are watching or listening together instead of alone. This is about a shared, synced experience for a group, not a single-user media player.

What “Group Watch/Listen Party Sync” meant

Every CampAI episode sets one theme and one constraint: 30 minutes, live, with AI doing the heavy lifting. Season 2's builders took “Group Watch/Listen Party Sync” in 6 different directions — the submissions below are what actually shipped inside the window, with the models used and the problems hit written up by the builders themselves.

Submissions

Every build

**Wavelength** — a synced watch/listen party app for a group scattered across different places. Anyone shares a room link, pastes a direct video or audio URL, and it plays for everyone at once — play, pause, and seek stay in sync across all the different people watching. On top of that, the room has live chat, floating emoji reactions everyone sees together, and "pinned moments" — timestamped notes anyone can drop that show up as clickable markers on the seek bar, so a good joke or big moment stays easy to find afterward. It's a single self-contained HTML file, set up to deploy as a Hugging Face static Space — no backend of your own, sync runs over a public PartyKit relay.

by Striker9 · 28 ratings

Walking through it like a live demo: 1. **Join** — you land on a gate screen, type a name, and either generate a random room code or paste one a friend sent you. Hit "Enter the room." 2. **Share** — the room code lives right in the URL (`#room=ABC123`), so "Copy invite link" gives you something you can just paste in a group chat. Whoever opens it lands in the same room. 3. **Load something** — anyone pastes a direct video or audio link into the box at the bottom and hits "Play for everyone." It detects whether it's audio or video and loads it for the whole room simultaneously. 4. **Stay in sync** — from there, whoever plays, pauses, or drags the seek bar, everyone else's player jumps to match. It corrects for network lag using timestamps, so people don't slowly drift out of sync over a long video. 5. **React together** — tapping an emoji sends a burst that floats up over the video for everyone in the room at the same instant, so it feels like reacting in the same room instead of typing into a void. 6. **Chat** — a normal live chat panel alongside the player for running commentary. 7. **Pin a moment** — instead of just chatting past a great scene, "Pin this moment" drops a marker on the seek bar tied to that exact timestamp, with a note. It shows up in the Moments tab too, and anyone can click it later to jump straight back to that point — so the best bits of the watch don't get lost in scrollback. Under the hood, there's no backend server: browsers connect directly to a public real-time relay (PartyKit) keyed by the room code, and broadcast small JSON messages for playback state, chat, reactions, and moments. That's also why it can ship as a plain static file / Hugging Face static Space with nothing to configure.