BeanTwitch - Live Rewards Hub & Stream Bots
BeanTwitch is the rewards and tracking layer beside a Twitch slots channel, running as three deployed services that share one identity. The site is Next.js 15 App Router with tRPC, Drizzle over Postgres, Clerk-backed Discord OAuth and Tailwind v4: a $250k weighted-wager leaderboard, a 20-tier reward ladder with claim state, raffles, a BEANS prize shop with collectible trading cards, a bonus-hunt board with prediction winners, a tournament bracket that renders to an OBS overlay route, a custom claw-line slot picker across 1,800+ titles, and a public payout ledger reconciling every prize paid. A Python 3.14 FastAPI service reads the Twitch channel’s chat over IRC and exposes giveaway and entry state over SSE; a contributor-owned Node/discord.js bot runs the Discord side, and both resolve viewers to the same linked account the site sees. Two constraints shaped the whole build: the most-watched version of the site is compressed H.264 video on a phone, since the streamer opens it live on stream, so the visual system is designed for the encoder first — flat fields, tabular figures, no bloom or wide gradients. And handles are masked wherever a name sits beside a wager figure, which keeps rival affiliates from poaching top players and keeps public amounts from turning into harassment.
Tech Stack