Better Call Snoo

Defend, Debate, and Judge Absurd Cases on Reddit!

"A case absurd, a defense so brief, The scales of justice, beyond belief. Snoo as your client, the jury awaits, Can you win their vote before the debate?"

Inspiration

I'm a big fan of games like Ace Attorney and saw some massive, dedicated Reddit communities like for Better Call Saul (r/bettercallsaul has over 1.1 million members!). This sparked an idea: what if I could bring that quirky legal drama and investigation vibe directly into Reddit, starring Snoo?

At its heart, Reddit is about sharing opinions and judging content. My game is built to gamify this core social mechanic. "Better Call Snoo" taps directly into that instinct: players submit defenses (their opinions), and the community votes on them (judges the content). It's a fun, "Reddity" game that is bite-sized, competitive, and builds community through shared debate.

What it Does

"Better Call Snoo" is a social-first, mobile-first legal defense game played entirely within Reddit. It transforms the subreddit into a virtual courtroom where players take on two distinct roles:

  1. The Attorney: You browse the Daily Docket, which features 5 new, absurd legal cases daily from a library of over 50+ scenarios (like "The Quantum Parking Violation" or "Emotional Support Peacock"). You then craft a witty, 250-character defense for a case. Submitting your defense automatically creates a new Reddit Custom Post for the community to vote on.

  2. The Juror: You visit these new posts and enter the Jury Voting Screen. Here, you read the defense and cast your verdict: "Guilty" or "Not Guilty." This screen is fully immersive, featuring dynamic Snoo characters that react to the vote counts and an animated "Scales of Justice" that tips in real-time as votes come in.

The game is competitive, with all scores tracked on the "Hall of Justice" Leaderboards.

Scoring System

Players earn points based on their role, with all scores calculated after lively-voting period.

Attorney Scoring

Attorneys are rewarded for their persuasiveness. The score is calculated using the formula: $\text{Score} = (\text{Not Guilty Votes} \times 2) - (\text{Guilty Votes})$

If the defense achieves a majority "Not Guilty" verdict, the Attorney receives a massive +500 { Point "Case Won!" Bonus}.

Juror Scoring

Jurors are rewarded for accuracy. If a Juror's vote matches the final majority verdict (the winning side), they earn +10 { Points}.


How I Built It

"Better Call Snoo" is a full-stack application built entirely on the Reddit Devvit platform using the React template.

  • Frontend: The client is a React + TypeScript app styled with Tailwind CSS for a responsive, mobile-first UI. I used custom React Hooks (useGame, useJuryVoting) to manage the multi-screen state and the Web Audio API for the gavel sound effect.
  • Backend: The server is a serverless Express app running on Devvit. It handles all game logic, scoring, and interacts with Devvit's built-in Redis for all data persistence (votes, scores, daily cases) and the Reddit API for user info and post creation.
  • Kiro Use: Kiro played a significant role throughout development. I utilized its AI capabilities to rapidly scaffold React components based on my design specs, generate utility functions like date formatting and score calculations, and assist in debugging tricky asynchronous logic, particularly with the Redis interactions for voting and leaderboard updates. This accelerated my workflow considerably.

Challenges I Ran Into

  1. Real-Time in a Serverless World: Since Devvit doesn't support WebSockets, achieving a truly "live" feel for the voting was my biggest challenge. I solved this by implementing an optimized polling mechanism in a custom React hook (useRealTimeUpdates) that updates votes every few seconds, giving the feel of real-time without the overhead.

  2. Vote Integrity: To prevent duplicate votes or race conditions, I had to ensure all vote submissions were atomic. I solved this by using Redis transactions (redis.hIncrBy, redis.hSet) on the backend to guarantee that each user's vote was recorded correctly and only once.

  3. Responsive Polish: Making the highly graphical courtroom UI (with two characters, scales, and text) look good on a narrow mobile screen was tough. I solved this by using Tailwind's responsive prefixes (md:, lg:) extensively, allowing the layout to gracefully stack elements on mobile while expanding side-by-side on desktop.


Accomplishments That I'm Proud Of

  • Building a complete, polished, and playable game loop entirely within the Devvit platform as a solo developer.
  • The self-sustaining content model: The game creates its own content. Players submit defenses, which become the content that other players engage with.
  • The dual-scoring system that fairly rewards both creativity (Attorneys) and wisdom (Jurors).

What I Learned

This project was a deep dive into building truly interactive experiences directly on Reddit. I learned the nuances of Devvit's serverless architecture, the importance of atomic operations with Redis for real-time data integrity, and how absolutely crucial a mobile-first design philosophy is for reaching the Reddit audience effectively. I also learned how to leverage existing Reddit community interests to build a relevant and engaging theme that feels native to the platform.


What's Next for Better Call Snoo

I'm excited about the future of "Better Call Snoo" and see lots of potential for growth! My next steps include:

  • User-Generated Cases: Implementing a system where players can create and submit their own cases, complete with evidence files, turning the game into a true community-driven sandbox.
  • Real-Life Scenarios: Introducing a new game mode based on simplified real-life legal scenarios or famous (public domain) cases for a fun, educational twist.
  • Expanding the Case Library: Adding hundreds more quirky and complex cases to keep the daily docket fresh for months to come.
  • Advanced Player Features: Adding detailed profile statistics, achievement badges, and maybe even "Objection!" mechanics during voting.

Built With

Share this project:

Updates