A friend was getting married and wanted something more interesting than a slideshow on the projector. So I built a live Twitter wall. Anyone who tweeted the wedding hashtag got their tweet onto the projection screens around the venue, with its text, photo, avatar and time. Someone on a tablet had final say on what made it through.
The original design had Facebook events, Google+ events and multi-tenant administration. Only Twitter shipped, scoped to the one event.
Architecture
- A crawler subscribed to the Twitter streaming API for the hashtag, normalized each tweet into text, photo URL, username, avatar and timestamp, and put it on RabbitMQ.
- A Node.js server subscribed to the queue and pushed each event to every connected screen over WebSockets.
- Filter mode on the admin dashboard ran everything through a moderation queue first, so anything off-topic (or off-color) got dropped before it hit a screen.
Overkill
This was one of the first applications I built from scratch, and I wanted to play with all of the stuff I'd been reading about. I think I threw in the obligatory MongoDB server somewhere, too.