Inspiration

I've always loved word games — Wordle got me hooked on the daily puzzle format, but I wanted something that also enticed Trivia enthusiasts. Instead of just guessing letters, what if the game gave you progressive clues that tested your knowledge? That's how CluesWord was born: a word puzzle where you get up to 3 increasingly specific hints to guess the answer. The fewer clues you need, the higher your score.

When I saw Reddit's Developer Platform, I knew it was the perfect home for CluesWord. Reddit communities thrive on shared challenges and friendly competition — exactly the kind of engagement a daily puzzle creates.

What it does

CluesWord offers three ways to play:

  • Daily Puzzle — A new puzzle posts automatically every day. Everyone in the community gets the same puzzle, so you can compare scores and strategies.
  • Quick Play — Over 600 puzzles across 5 categories (Countries, Cities, Animals, Movies, Famous People) for unlimited play.
  • Create — Players write their own word and 3 clues, which get published as a community puzzle post. This lets anyone challenge the subreddit with their own creations.

After solving, players can share their results as a Reddit comment with an emoji grid, showing how many clues they needed without spoiling the answer.

How I built it

As the creator of https://www.sonarword.com (An adjacent game but with a musical twist) I leveraged my template to build boiler plate code. The web version came first — vanilla JavaScript with a clean separation between game logic, UI, and storage. This modular design turned out to be critical for the Reddit port.

For the Devvit version, I created a reddit/ folder alongside the existing web app. The Devvit backend (TypeScript) handles Redis storage, Reddit API calls, post creation, and the daily puzzle scheduler. The game itself runs in a webview that communicates with Devvit via postMessage.

Key architectural decisions:

  • Storage bridge pattern — The web version uses localStorage, the Reddit version uses a postMessage → Redis bridge. Both expose the same StorageManager API, so the game logic didn't need to change.
  • Build script — A Node.js script copies shared files (CSS, game logic, puzzle data) into the Reddit webroot, keeping one source of truth without breaking either platform.
  • In-webview puzzle creation — Since Devvit's showForm doesn't work inside custom post renders, I built the puzzle creation form directly in the webview HTML, with the Devvit backend handling the actual Reddit post creation.

Challenges I faced

The biggest challenge was the Devvit sandbox. Several things I assumed would "just work" didn't:

  • context.ui.showForm() silently fails inside custom post type renders — I had to rebuild puzzle creation as an in-webview form.
  • Hyperlinks can't navigate out of the webview iframe — I replaced "Open your puzzle" links with clipboard copy buttons.

These challenges were primarily due to working with Devvit for the first time. I'm confident my next project will be smoother. I also placed self-imposed constraints to keep the game compatible across two platforms: Reddit (Devvit) and a standalone web version. This meant every architectural decision had to work for both, which added complexity but resulted in a cleaner, more portable codebase.

Built With

  • and-user-stats-(via-devvit)-reddit-api-?-post-creation
  • and-webview-hosting-redis-?-game-state
  • and-webview-typescript-?-devvit-backend-(custom-post
  • comments
  • css
  • devvit
  • html
  • javascript
  • javascript-?-game-logic
  • leaderboards
  • menu-items
  • node.js
  • reddit
  • redis-handlers
  • scheduler)-css-?-responsive-styling-for-mobile-and-desktop-html-?-webview-markup-reddit-devvit-?-developer-platform-for-custom-posts
  • scores
  • typescript
  • ui
  • vite
Share this project:

Updates