Skip to main content
  1. Posts/

30 Days of Vibe Coding - Day 19 - ReactionWall

Nuno Coração
Author
Nuno Coração
Principal Product Manager @ Docker
Table of Contents
30 Days of Vibe Coding - This article is part of a series.
Part 19: This Article

Day 19. I wanted something fun and interactive for live events. The kind of thing you throw up on a projector at a meetup and let people send reactions from their phones.

The Prompt
#

“Build a live reaction wall for events. Create an event, share a link or QR code, and reactions fly across the screen in real time. Emoji bar at the bottom, text messages too. Full-screen projection mode. Firebase for real-time sync.”

Try it out yourself here

How It Was Built
#

Watchfire broke this down into 9 tasks. The first few were foundational: setting up Firebase Realtime Database, event creation flow, and anonymous auth so nobody needs to sign up. Then came the emoji reaction bar, the animated flying reactions using Framer Motion, the full-screen display mode for projectors, sound toggle, and a final polish pass.

The real-time part was the core challenge here. Every reaction needs to show up instantly on every screen viewing that event. Firebase Realtime Database handles that out of the box, but there’s a lot of nuance in making it feel good. The reactions use a 30-second sliding window so old ones disappear, and there’s rate limiting at 1 reaction per second to keep things from getting out of hand.

What I Got
#

The landing page is clean and dark. One button to create an event wall.

Landing page

You name your event and hit “Go Live.” That’s the entire setup.

Event creation

Once you’re in, you get a QR code and shareable link in the top left so attendees can join instantly from their phones. The bottom of the screen has an emoji bar with 8 options plus a text input for custom messages up to 50 characters.

Event wall with emoji bar and QR code

Reactions on screen

The display mode is where it gets fun. Full screen, dark background, reactions flying across with glow effects. The emojis have randomized trajectories, sizes, and a wobble animation. Text messages float across too in little purple bubbles. When people start spamming reactions, there’s a burst effect that kicks in.

Display mode with flying reactions and text

There are nice touches I didn’t explicitly ask for. Haptic feedback on mobile when you send a reaction. Pop sounds via the Web Audio API with a toggle to turn them off. A cooldown indicator so you know when you can send again after the rate limit.

The Tech
#

  • React 19 with TypeScript and Vite
  • Firebase Anonymous Auth plus Realtime Database
  • Framer Motion for all the flying animations
  • QRCode.react for the shareable QR codes

Framer Motion is doing the heavy lifting on the visual side. Each reaction gets its own animation with random parameters for trajectory, rotation, and scale. The result is that no two reactions look the same when they fly across the screen.

Try It
#

Try ReactionWall

Create an event, open the link on your phone, and start sending reactions to yourself. It’s more satisfying than it should be.

Day 19 Verdict
#

This is one of those projects where the real-time aspect makes it feel alive. Static apps are fine, but there’s something about seeing reactions pop up the instant someone taps their phone that makes it feel like a real product. Firebase handled the sync layer, Framer Motion handled the animation layer, and the whole thing came together in a way that actually works for a live event.

The QR code sharing, the full-screen display mode, the fact that nobody needs to install anything or create an account. For a meetup or conference talk, this does the job. Not production-grade, but good enough to throw up on a projector and get the crowd going.


This is day 19 of 30 Days of Vibe Coding. Follow along as I ship 30 projects in 30 days using AI-assisted coding.

30 Days of Vibe Coding - This article is part of a series.
Part 19: This Article

Related