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
- redis-handlers
- scheduler)-css-?-responsive-styling-for-mobile-and-desktop-html-?-webview-markup-reddit-devvit-?-developer-platform-for-custom-posts
- scores
- typescript
- ui
- vite
Log in or sign up for Devpost to join the conversation.