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 upload failed 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

Share this project:

Updates