Inspiration

I wanted to turn the huge list of location-based subreddits into something interactive and game-like. Reddit already has incredible local communities, but they can be hard to discover. The goal was to make discovery feel like exploring a live world map, then add a daily challenge that gives people a reason to come back.

Also, with Devvit Web evolving so quickly, there are already a lot of great games on the platform, but many of them could exist anywhere and don't necessarily feel unique to Reddit. I challenged myself to build something that could ONLY exist on Reddit by making Reddit-native content the core of the gameplay.

What it does

Sub Scan has two experiences:

  • Sub Scanner mode: an animated world map scanner that jumps between geocoded subreddits and surfaces active posts from each location.
  • Sub Scan daily game: one subreddit is hidden each day, and players guess it by tapping map pins. Wrong guesses and clue reveals add time penalties, so fast and accurate solves matter.

It also tracks streaks, shows your result versus community averages, posts a new daily game on a fixed schedule, and much more!

How I built it

I built this as a Devvit app with a TypeScript stack:

  • Frontend: React + react-globe.gl for the 3D globe, custom hooks for scanner/game state, and responsive UI components for splash, game, and admin flows.
  • Backend: Express endpoints running in Devvit, with Redis-backed game state, metadata storage, and player progress.
  • Data pipeline: subreddit coordinate data is loaded and reconciled, then subreddit metadata (icon, size, type, etc.) is refreshed in batches with a scheduler so it is fresh and ready to go.
  • Automation: scheduler jobs publish the daily challenge at 12:00 UTC, refresh metadata, and run reconciliation tasks.
  • Game logic: weighted scanner picks (based on subscriber counts), timed penalties for clues/wrong guesses, and solve summaries/streak tracking.

Challenges I ran into

  • Normalizing subreddit data from different sources and keeping bad/missing metadata from breaking gameplay.
  • Making globe interactions feel smooth on both desktop and mobile while keeping load/perf reasonable.
  • Designing penalty/clue balance so the game is still winnable but competitive.
  • Handling daily scheduling, persisted progress, and “resume vs completed” edge cases cleanly.

Accomplishments I'm proud of

  • Shipping both a discovery experience and a replayable daily puzzle in one cohesive app.
  • Building reliable scheduled daily game generation and game admin tool.
  • Creating a polished scanner flow with motion, audio, and post previews that feels alive.
  • Adding streaks and comparative stats so players get immediate feedback beyond just “win/lose.”

What I learned

  • Practical patterns for Redis-backed game state, including partial progress + final result reporting.
  • More advanced React state orchestration for timed UX, animation timing, and map-driven interactions.
  • The importance of maintenance tooling (reconciliation/admin scripts) for content-driven apps.

What's next for Sub Scan

  • Add difficulty tiers or modes (fewer/more clues, different penalty systems).
  • Expand on the exploration pieces of the applications, let player add to and customize the map.
  • Introduce leaderboards/friend challenges and richer post-game analytics.
  • Improve onboarding/tutorial hints for first-time players.

Built With

Share this project:

Updates