Inspiration
The best Reddit games aren't apps that happen to live on Reddit β they're excuses for a community to talk to each other. Daily puzzle games like r/hotandcold and r/dailyguess kept pulling me back with the same loop: one shared puzzle, one comment section full of trash talk, and the quiet pressure of a streak counter. Emoji riddles felt like a perfect fit for that loop β everyone reads emojis, everyone thinks they're good at decoding them, and everyone is wrong at least three times before they get it.
What it does
Emoji Enigma posts one riddle a day to your subreddit: a string of emojis encoding a movie, song, idiom, or piece of internet culture (πΊπ§±π = "The Wolf of Wall Street").
- 5 guesses, Wordle-style feedback: π© cracked it, π¨ so close (right words or a near-miss spelling), π₯ nope. Word-length blanks guide you, and a hint unlocks after 2 wrong guesses.
- Scoring & streaks: 100 points on guess 1 down to 25 on guess 5, plus a streak bonus (+5/day, capped at +50). Miss a day, lose the π₯.
- Leaderboards: daily and all-time boards with medals, plus a community guess-distribution chart when you finish.
- The community writes the game: anyone can submit a riddle (clue + answer + hint + category). Submissions queue up and become future daily posts, credited to the author in the post title.
- Comments as gameplay: one-tap spoiler-free result sharing ("π§© Emoji Enigma #12: πΊπ§±π β 2/5 π¨π© π₯7") turns the comment section into the scoreboard.
How we built it
Devvit Web end to end: a vanilla TypeScript web view (no framework β an inline splash entrypoint for the feed and an expanded game view), a Hono serverless backend, and Redis for every piece of state β per-post riddles, per-player game records, streak hashes, guess-distribution hashes, sorted-set leaderboards, and a sorted-set queue of community riddles. A scheduler cron task (0 14 * * *) creates each day's post, pulling from the community queue first and falling back to a 24-riddle built-in pack. An onAppInstall trigger posts Enigma #1 the moment the app lands on a subreddit, and moderators get menu shortcuts to post manually and check the queue.
Challenges we ran into
- Answers had to stay secret. The answer never leaves the server until your game is over β the client only ever sees word lengths and feedback. That forced all guess-judging, scoring, and streak logic server-side from day one.
- "Close enough" is hard. Nobody types "The Lion King" exactly. The matcher normalizes unicode and punctuation, forgives leading articles, and combines Levenshtein distance with word-overlap detection so "lion heart" earns a π¨ instead of a cold π₯.
- TypeScript vs. Devvit's split runtime.
@devvit/webships browser and server code behind package export conditions, so one tsconfig can't type-check both β the fix was per-target tsconfigs with differentcustomConditions. - Testing without Reddit. The client detects when the Devvit API is unreachable and switches to a self-contained demo mode, which made it possible to iterate on the whole UX locally before ever creating a real post.
Accomplishments that we're proud of
The full retention loop works end to end: scheduled daily posts, streaks that actually hurt to lose, leaderboards, and a UGC pipeline where a player's riddle becomes tomorrow's post with their name on it. The game is genuinely self-sustaining β after the seed pack runs out, the community is the content.
What we learned
Devvit Web makes the client/server boundary feel like a normal web app, but designing for Redis-only state changes how you model a game β sorted sets turn out to be a shockingly good fit for both leaderboards and content queues. Also: hint timing is game design, not a feature flag. Unlocking at 2 wrong guesses (not 3) is the difference between "fun struggle" and "rage quit."
What's next for Emoji Enigma
- Upvote-driven queue: let the community vote on submitted riddles so the best ones jump the line.
- Flair rewards: automatic user flair for streak milestones and riddle authors whose puzzles stump the most players.
- Weekly tournaments: themed weeks (movie week, song week) with their own boards.
- Difficulty rating: auto-tag riddles by community solve rate, and let players pick their pain level.
Built With
- devkit
- hono
- node.js
- redis
- typescript
- vite
Log in or sign up for Devpost to join the conversation.