Skip to content

Case studyLive

Hockey Pick’em & Sub Pulse

Two apps on Reddit’s Developer Platform: a free-to-play hockey prediction game, and a weekly health report with alerts for moderators.

Role
Solo — design, code, policies, publishing
When
2026
  • Backend
  • Full-stack

Sub Pulse’s listing is not public yet; its policies are. The source is private.

Who it’s for

  • Hockey communities on Reddit that want a daily pick’em game without money, odds or a separate site.
  • Subreddit moderators who want to know how their community and their queue are doing — without opening five tools every week.

What I built

  • Hockey Pick’em: a daily slate post where players pick winners and call overtime, with picks locked on the server at puck drop, live period and clock, and season and weekly leaderboards with optional flair.
  • Sub Pulse: a weekly one-page digest to modmail (and optionally Discord or Telegram) — activity, growth, modqueue, mod actions, bans, admin actions — plus alerts with hysteresis and a mod-only dashboard post.
  • Everything runs inside Devvit’s serverless runtime: scheduler jobs, Reddit-hosted Redis, and a declared allowlist of outbound domains.
  • I wrote and published the terms and privacy policies for both apps, and built data deletion in: per-user delete, a daily sweep for deleted accounts, and retention limits.

How it works

  1. 1Install & choose

    A moderator installs the app and picks league mode or a team (Pick’em), or the digest channel and alert levels (Sub Pulse). Nothing posts until they do.

  2. 2Schedule

    Hourly and five-minute jobs sync the schedule and live scores, or poll the modqueue and roll up the day’s counters.

  3. 3Play / watch

    Players pick before puck drop; moderators get a live dashboard post and an alert when the queue overflows — once when it starts, once when it clears.

  4. 4Score / report

    Finished games are scored exactly once, in short chunks; every Monday the digest compares the week with the one before.

  5. 5Forget

    Retention limits, a delete button for users and a daily sweep for deleted accounts keep only what the app needs.

Key decisions

  1. 01

    Score exactly once, in chunks

    Instead of: Score everything in one long job when the games end.

    Why: Serverless jobs have a time limit and can be retried. Each finished game is scored exactly once, in pieces of at most about twenty seconds, so a big community finishes over a few runs and a retry never awards points twice.

  2. 02

    Alerts as state machines with hysteresis

    Instead of: Send an alert every time a threshold is crossed.

    Why: A queue hovering around its limit would page moderators every five minutes. Each alert fires once when it starts and once when it clears below half the threshold; admin-action alerts are batched to at most one an hour.

  3. 03

    Store counts, not content

    Instead of: Keep post and modmail text to build richer reports.

    Why: Moderators trust a tool that can’t leak what it never had. Sub Pulse keeps counters and ids with expiry dates, never bodies, and both apps document exactly what they store and for how long.

  4. 04

    Delivery claimed per channel

    Instead of: Send the digest to every channel in one pass.

    Why: Modmail, Discord and Telegram fail independently. Each channel claims its weekly send, so the next hourly tick retries only the one that failed — nobody gets the same digest twice.

Architecture

REDDITSlate & dashboard postsDevvit Web · ReactMod menu & settingsper-install configDevvit runtimeSERVERLESSServer handlerspicks · lock · menuactionsScheduler5-min · hourly · dailyjobsread · writeDATARedisReddit-hosted · TTLsReddit APImod log · modqueue ·modmailOUTSIDEHockey feedpublic schedule &scoresDiscord · Telegramoptional digest &alerts↑ ships everything aboveDELIVERYVitest33 test filesdevvit publishversioned releasesPoliciesGitHub Pages

Both apps share the same shape: UI in a Reddit post, logic in Devvit’s serverless handlers and scheduler, state in Reddit-hosted Redis.

Numbers

apps shipped on Reddit’s platform
2
test files
33
live scoring and modqueue polling interval
5 min
post or modmail bodies ever stored
0

Tech stack

Platform

  • Devvit Web
  • Reddit API
  • Scheduler
  • Redis

App

  • TypeScript
  • React
  • Vite
  • Tailwind CSS

Quality

  • Vitest
  • ESLint

Want the longer version — the code, the pipeline, the trade-offs?

Email me
Next case studyPostgradiaA coaching platform where coaches, students and parents work from the same weekly plan.