· 2 min read
Twitter Moderator: One Feed, Many Views
Twitter Moderator kept moderation and the venue screens completely separate, each reading the same stream of posts, and that's what kept both simple.
The brief
An events company wanted guests' tweets on the screens at their venues, without anything unsuitable getting through. Twitter Moderator did three jobs: collect posts by hashtag, let staff moderate them, and show the approved ones on screen.
The decision that shaped everything was to keep those jobs apart. There's one stream of posts, and moderation and the screens are separate views of it. Neither knows the other exists.
One source of truth
Every post lands in one place on the server, with a status: waiting, approved or rejected. That's the only copy.
Nothing is ever sent to a screen. Moderating a post just changes its status, and each screen shows whatever is approved right now. So there's nothing to keep in step: a screen that drops its connection and comes back simply picks up where things are.
Moderation knows nothing about screens
Event staff moderate from a phone, mid-event, often while doing something else. So the moderation view does one thing: swipe right to approve, left to reject.
It doesn't need to know how many screens there are, what they look like or which event layout is showing. Rejected posts aren't deleted either. They can be found again by filtering, so a mis-swipe is never a disaster.
Screens know nothing about moderation
A screen only asks one question: what's approved? How it shows the answer is up to its layout.
The layouts were the hardest part to design. Each event wanted something different: the live feed in a grid, alongside text, images and branding, arranged to suit the room. The editor lets you compose a layout by dragging and resizing elements, by touch or mouse, and the live screens update as you work.
That's a lot of complexity, and it all stays on the screen side. Adding a screen, redesigning one or running several events at once never touched moderation, because moderation never knew about any of it.
Takeaways
- Keep one source of truth, and make every view read from it instead of passing data along.
- Give each view one job. Moderation swipes; screens display.
- Let the views change independently. The complex part, layouts, could grow without making the simple part, moderation, any harder.