Inspiration

I wanted to build something that felt genuinely Reddit-y. Not a game about Reddit, but one built around what communities already do well: create, guess, and share. Drawing games are easy to pick up, surprisingly engaging, and naturally social. So I built Snap Sketch: guess 3 drawings, draw 1 word, and once a moderator approves your sketch, it becomes a puzzle for other players.

What it does

Every day, players:

  1. Guess 3 community drawings using category hints and an on-screen letter keyboard.
  2. Draw 1 randomly assigned word to add to the shared pool.
  3. See results with XP, streaks, and a live countdown to the next daily reset.

Players also earn XP, build streaks, climb daily and all-time leaderboards, browse a public gallery of approved drawings, upvote their favorites, and report anything inappropriate.

Every submitted drawing goes through a lightweight moderation step: a mod reviews it in an in-app queue and approves it only if the sketch matches its word well enough to actually be guessable. Approved drawings flow into the pool for everyone; the rest never make it in. This keeps the guessing experience fair and the quality high as the community grows.

How I built it

The whole thing runs on Devvit Web. The client uses React + TypeScript, while the backend runs on Node/Hono with Redis as the only datastore.

Highlights:

  • Drawings are stored as vector strokes, not images. This keeps them tiny, resolution independent, and removes the need for image hosting.
  • Sessions are keyed by UTC date. Every Reddit post opens the same daily challenge, even older posts.
  • A curated 114-word list doubles as the profanity filter, since words never come from free text.
  • 111 hand-drawn starter drawings across 8 categories mean there's always something to guess on day one.
  • A separate "pending" pool holds unapproved submissions, so the guess picker can never accidentally serve a drawing that hasn't been reviewed.
  • Moderator status is verified server-side against Reddit's real moderator list, not a client flag, so the mod tools only appear for actual mods.

Challenges I ran into

  • Redis has no Set type. I used hashes to enforce one vote and one report per user.
  • Serverless retries. The final guess had to replay the stored result instead of failing after a retry.
  • Seeding logic. Checking if the drawing pool was empty broke once players added their own drawings. A dedicated Redis marker fixed it.
  • App-account posting on new subreddits. Creating posts as the app account was blocked until the app is approved, so I made the moderator "create post" action run as the user instead, which unblocked launching the game in a real community.
  • Mobile layout. Fitting the canvas, keyboard, and controls on small screens took real device testing.

What I learned

Building on a serverless, Redis-only platform taught me to design around retries and simple key-value storage. I also learned that retention depends as much on architecture as features. The UTC date session model is what makes fresh daily content work consistently across Reddit's feed. And adding a moderation gate taught me that for a user-generated-content game, the quality of what goes into the pool matters just as much as the volume.

Built With

Share this project:

Updates