Inspiration
I have been a heavy user of Baidu Tieba, a Chinese platform built around topic-based communities. One of its most recognizable traditions is the “+3” culture. Users can earn three experience points in total from their first three replies of the day. Although the reward is small, it gives people a simple reason to open the community, leave a comment, and return the next day.
Tieba also gives every community its own progression titles. These titles are often designed by the community moderators, who understand the topic, humor, and culture better than anyone else. In many communities, earning a special title becomes one of the main reasons people continue participating.
Imagine that you are a dedicated member of a wizardry community. Starting as an Arcane Novice and eventually becoming a Legendary Wizard can feel genuinely rewarding. The title represents your history and identity inside that community, even though it has no monetary value.
This inspired me to build SubRanks: a community-authored progression system designed specifically for Reddit.
What it does
SubRanks turns ordinary Reddit participation into a lightweight progression game.
A user first joins the community through SubRanks and immediately receives its lowest-level title. After joining, the user can earn XP through two simple actions:
- Daily check-ins award 3 XP on the first day, 4 XP on the second consecutive day, and 5 XP per day from the third day onward.
- The first three genuine comments each day award XP.
If the user breaks their check-in streak, the next check-in returns to 3 XP. Comments that are empty, deleted, or marked as spam do not count. If a rewarded comment is later deleted, its XP is removed as well.
As users earn XP, they unlock community-specific titles and move up the leaderboard. Each subreddit can have between 2 and 18 levels. Moderators control the title names, XP requirements, descriptions, and colors. They can also optionally synchronize a user’s current rank with Reddit user flair.
For example, a wizardry community could create a path from Arcane Novice to Legendary Wizard. A software development community could use Junior, Mid-Level, Senior, Staff, Principal, Distinguished, and Fellow.
Instead of asking AI to generate every title automatically, SubRanks gives this power to moderators. Community insiders are more likely to create titles that feel funny, meaningful, and authentic.
How I built it
I built SubRanks as a Devvit Web application using TypeScript.
The frontend uses React and CSS to display the user’s current title, XP progress, check-in streak, daily activities, rank ladder, leaderboard, and moderator controls.
The backend uses Express and Devvit’s server environment. Devvit Redis stores community settings, user XP, check-in history, rewarded comment IDs, and leaderboard information.
Reddit event triggers detect new and deleted comments. The Reddit API is also used to join users to the community, verify moderator permissions, create the interactive SubRanks post, and optionally update user flair.
I used Vite for building the client and server, and Vitest for testing the XP and streak logic. The project currently includes automated tests for check-ins, streak resets, daily comment limits, and deleted-comment XP rollback.
Challenges
One major challenge was preventing the system from becoming an easy XP farming tool. I limited comment rewards to the first three valid comments each day and made deleted comments remove their original reward.
Another challenge was making the progression system flexible. Different communities need different numbers of levels, names, and XP requirements. The moderator editor therefore supports between 2 and 18 fully customizable ranks instead of assuming that every community needs exactly ten.
Working with Reddit permissions and event triggers was also challenging. The application needs to distinguish ordinary users from moderators, respond to comment events, manage Redis data separately for every subreddit, and synchronize optional user flair without exposing moderator controls to regular users.
What I learned
I learned that retention does not always require a complex daily game. A small and predictable reward loop can be enough to encourage people to return.
I also learned that community identity is more powerful when the community can shape it. An automatically generated title may sound polished, but a title created by someone who understands the community’s jokes and interests can feel much more valuable.
From the technical side, I learned how to build a full-stack Devvit Web application, work with Reddit triggers and permissions, store persistent data in Redis, and test progression logic with automated tests.
What's next
I would like to add seasonal progression systems, community badges, moderator analytics, and special titles for community events. I also want to make it easier for moderators to share and remix rank templates created by other communities.
The long-term goal is to make every subreddit capable of creating its own meaningful progression culture.
Built With
- api
- devvit
- express.js
- node.js
- react
- redis
- typescript
- vite
- vitest
Log in or sign up for Devpost to join the conversation.