Inspiration
Reddit already runs on collective rituals, daily threads, karma, subreddit rivalries that live in the comments. We wanted a game that turned that energy into an actual daily contest between communities. The pitch: Wordle's daily ritual, Clash of Clans' clan wars, and r/place's territorial pride, combined into one loop, solve a puzzle, bank a point for your subreddit, and watch your sub fight a rival for territory on a shared map.
The mystery-reveal mechanic came from a simple question: what if you didn't know what you were solving until you solved it? A jigsaw with no reference picture turns every rotation into a clue instead of a chore.
What it does
Every day, your subreddit is matched against a rival (or a "ghost" par score if it's flying solo). Members drag mystery jigsaw pieces into place, no reference image, just a one-word hint, and every solve banks a point for the sub's live war tally. Guess the picture early for a bonus, land a golden tile for double points, and your first 7 solves each day advance a themed story journey (a Coach or a Head Chef, depending on your sub's category) with collectible items. At midnight UTC, a scheduled job resolves the war, moves a tile on the territory map, and auto-posts the next day's matchup.
How we built it
Built on Devvit Web with a React + TypeScript client and a Hono server, all scoring logic living server-side, the server issues every puzzle instance (seeded by date + user + chain position), validates solve timing, and enforces a daily cap, so the client is display-only. State lives entirely in Devvit Redis: war tallies, territory ownership, per-user chain and journey progress, lifetime rank stats.
We worked in phases: a playable client first, then the server-authoritative puzzle chain (our internal go/no-go checkpoint), then the war layer, then automation, a Devvit Scheduler cron job registered declaratively in devvit.json, no manual job scheduling needed. Polish came last: a real SVG hex map for territory, tile-snap animations, and a live countdown to the next war reset.
Challenges we ran into
- Mystery-reveal vs. usability. Early testing showed "no reference image at all" was disorienting, solvers didn't know what they were building. We landed on a middle ground: no picture, but a short always-visible hint word, plus a reveal moment ("It was: Street Tacos!") the instant you solve.
- Sourcing real, compliant images. Our design doc explicitly bans real trademarks and real-person likenesses, no small thing once AI image generation makes it easy to accidentally produce a recognizable athlete or a licensed team crest. We caught and rejected a batch of otherwise great-looking images because they included a real footballer's face and official league branding, and rebuilt the pack with generic, unbranded action shots instead.
- Platform flakiness during iteration.
devvit uploadfailed intermittently throughout the build (auth hiccups, transient network errors), nothing wrong with the app, just Reddit's upload endpoint under load. We got used to a quick retry loop. - Cutting scope deliberately. With a hard deadline, we chose what not to build: real cross-subreddit matchmaking by active-player count has no second real installation to prove itself against yet, so the "ghost war" fallback (built to spec, not a stopgap) carries the single-demo-sub case. We'd rather ship an honest v1 than a half-built v2 feature.
What we learned
Server-authoritative game design forces good discipline early, deciding before writing any UI that the client never computes a score made every later feature (golden tiles, early guesses, journey bonuses) a matter of adding a case to one function, not chasing state across the client.
What's next
More topic packs beyond Sports and Food, real matchmaking once a second community is live, and rank-tier leaderboards across subreddits.
Built With
- api
- devvit
- eslint
- react
- typescript
Log in or sign up for Devpost to join the conversation.