Inspiration
There's a moment every Reddit moderator knows. You remove a post or ban a user for breaking a rule, and within minutes, your Modmail lights up with an angry, unstructured, emotionally raw wall of text. Moderators are volunteers, yet they frequently become punching bags for frustrated users. This quiet, accumulative stress is the #1 reason mod teams collapse. Reddit has excellent tools for taking moderation actions, but almost nothing to help mods survive the aftermath. ZenQueue was built for the aftermath.
What it does
ZenQueue intercepts the moment between a moderation action and the inevitable emotional response by funneling users through a structured, time-gated appeal gateway.
- Mandatory Cool-Downs: When a user is actioned, they receive a portal link. They cannot appeal immediately. Post removals trigger a 15-minute timer, and bans trigger a 2-hour hold. Most toxicity is written in the first five minutes of anger; ZenQueue simply waits those minutes out.
- Structured Appeals: Once unlocked, users must pick a category and explain their case in exactly 250 characters. Banned users must also answer: "How will you contribute positively to this community?"
- Mod Triage Dashboard: Mods review appeals in a clean, expanded-mode fullscreen dashboard. They can see "First Offense" badges, write custom de-escalation notes, and click "Approve" to automatically restore posts or unban users.
- Modmail Interceptor: If a user tries to bypass the cooldown by spamming Modmail directly, ZenQueue intercepts it, auto-replies, and automatically archives the thread to keep the Mod inbox pristine.
How we built it
ZenQueue is built 100% natively on Reddit's Devvit Web Platform.
- Frontend: We used React, Vite, and Tailwind CSS to build a highly responsive, immersive UI that launches in Devvit's Fullscreen Expanded Mode (to avoid mobile inline scroll-traps).
- Backend: We utilized Hono for routing and Devvit's native secure environment.
- Database: Devvit's managed Redis KV store handles persistent state, allowing us to track exact cooldown timestamps, first-offense metrics, and active appeal tokens without relying on fragile external VPS servers.
- Triggers & APIs: We deeply integrated Devvit's
onModActionandonModMailbackground triggers. We also utilizedreddit.modMail.createConversationto ensure all User-Generated Content from the appeals is permanently archived and reportable to Reddit Trust & Safety.
Challenges we ran into
Integrating seamlessly with Reddit's backend presented several unique challenges. First, we encountered the "Infinite Bot Loop"—our Modmail interceptor caught a user's message and replied, but then accidentally caught its own reply and started talking to itself! We solved this by strictly checking the messageAuthorType to ignore ParticipatingAs_MODERATOR events.
Second, we had to navigate Reddit's strict UI compliance rules. We initially built the dashboard as an inline post, but realized this created a "scroll trap" on the Reddit mobile app. We successfully refactored the entire React app to use requestExpandedMode, resulting in a much more professional, fullscreen modal experience.
Accomplishments that we're proud of
We built the first structured, time-gated ban appeal system ever native to Reddit. We are incredibly proud of the "Modmail Interceptor" feature, which successfully catches and auto-archives rogue messages. But mostly, we are proud to have built a tool that actively protects the mental health of volunteer moderators by shifting conversations from defensive arguments to constructive dialogue. ZenQueue-Mod was also approved by devvit team and available for users to try and add to their community.
What we learned
We gained a massive appreciation for Reddit's Devvit architecture. We learned how to manipulate Redis key-value stores in a serverless environment, how to safely cast strict TypeScript IDs (like t1_ and t3_), and how to handle deeply nested JSON payloads from background webhook triggers.
What's next for ZenQueue-Mod
We plan to introduce a configuration wizard allowing moderators to map their specific subreddit rules directly to the dropdown menus. We also want to implement custom timer lengths per-subreddit and a dashboard analytics page so mods can see their average appeal resolution times.
Built With
- devvit
- hono
- node.js
- react
- redis
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.