Inspiration
Every sports season, TV finale, or esports tournament, Reddit communities explode with "who do you think wins?" threads — but there's no way to track who was right. I wanted to build something that turns those casual predictions into a real competitive experience, directly inside Reddit without leaving the feed.
What it does
LeagueCraft is a fully generic fantasy picks and prediction league tool for Reddit. Moderators create a league with custom questions and options — NFL matchups, Survivor boot order, Oscar winners, F1 podiums, anything — and community members submit their picks before the deadline. After the round closes, mods mark correct answers and the app automatically scores every player and updates the leaderboard.
Key features:
- Unlimited topics — mods define questions, options, and point values for any fandom
- Round-based competition — lock picks, score rounds, and post standings with one click
- Live vote distribution — after submitting, players see how everyone else voted
- Leaderboard — cumulative points across all rounds, updated automatically after scoring
- Past results — players can review every round and see which picks were right or wrong
- Premium tier — 25 Gold unlocks unlimited picks and a 1.5× point multiplier per round
How I built it
The app runs on Devvit with a React + TypeScript WebView for the full game UI. The backend uses tRPC over Hono for type-safe client/server communication, with all state persisted in Redis via Devvit's KV store. The inline post card is a lightweight splash that immediately opens expanded mode — keeping the in-feed experience clean and Reddit-native.
The architecture is split cleanly:
server/core/league.ts— all game logic (rounds, picks, scoring, leaderboard)server/routes/— tRPC router + Hono payments webhookclient/components/— tabbed UI: Picks, Leaderboard, Results, Mod panel
Challenges
The biggest challenge was payments integration — wiring up the Gold premium upgrade so it's seamless inside the post without breaking the picks flow. Reddit's payment callbacks are server-side webhooks, so I had to carefully sync premium status into Redis and reflect it immediately in the client.
The second challenge was Reddit's inline scroll trap policy — any overflow: scroll in the inline web view blocks native Reddit scroll gestures. I had to ensure the inline splash is a completely static, non-scrollable card, with all interactive content gated behind expanded mode.
What I learned
- Devvit's tRPC + Hono pattern is extremely ergonomic for type-safe full-stack Reddit apps
- Designing for two distinct view modes (inline splash vs. expanded game) requires careful separation of concerns from the start
- Reddit Gold payments work well as a soft paywall — players who are invested enough to spend Gold become your most engaged users
What's next
- Scheduled round locking (auto-lock at a set time without mod action)
- Push notifications when a round is scored
- Multi-round season summaries with winner announcement posts
Built With
- devvit
- hono
- react
- redis
- trpc
- typescript

Log in or sign up for Devpost to join the conversation.