Live applications Launched 2025-10

GameShuffle

A game night companion for streamers and the people watching

gameshuffle.co
GameShuffle

How it started

GameShuffle began as a Mario Kart 8 Deluxe randomizer Britton Lorentzen built for his own Twitch streams, to get viewers off their usual kart combos mid-race. The randomizers that already existed couldn’t handle multiple racers, didn’t embed cleanly in OBS or Streamlabs, split combo randomizers from track randomizers, and mostly covered one Mario Kart game. None of them were designed around the actual experience of a game night.

The first version worked two ways: as a browser source in OBS/Streamlabs for on-stream use, or as a standalone page viewers could pull up on their phones. Competitive modes came next, because Mario Kart has a serious competitive scene and some groups want structured FFA or team scoring with a live leaderboard, not a random kart.

That static randomizer is now a full platform. The streamer is the customer; viewers participate from Twitch and Discord chat with no account required.

What it does

Play. Randomizers for Mario Kart 8 Deluxe and Mario Kart World, lounge-style live scoring, and five tournament formats, including a Heat→Mains ladder and full championship seasons. A Pokémon TCG companion app runs alongside the Mario Kart tooling.

Stream and platform. Deep Twitch integration: a chat bot, channel point redemptions, an OBS overlay, and a lobby viewer. A serverless Discord bot with slash commands, rich embeds, and a Discord Activity for in-voice-channel use. The Hub is a multi-platform session engine that ties it together, alongside a public /live page, a wheel spinner, and polls that run across platforms at once.

Economy and engagement. Arcade Tokens are a closed-loop currency viewers earn by showing up and participating, then spend on prediction markets, awards, bounties, and participant-driven picks and bans. Leaderboards carry standing across seasons.

Community and identity. Follows, presence, notifications, invitations, and a unified Comms Center for DMs and group chat. Public profiles with personal theming. A full trust and safety system: reporting, blocking, moderation, and appeals.

Accounts and business. Hardened auth (OAuth and email, verification, a passwordless gate, a full deletion cascade), Stripe subscriptions with tier gating, and staff/admin operational tooling.

Foundation. SEO/GEO marketing pages, first-class privacy and compliance (cookie consent, Global Privacy Control, DSAR flow), and lifecycle email.

How it’s built

The through-line is serverless-first, managed services, so one person can operate a real-time, multi-platform product without an ops burden.

Next.js 16 (App Router), React 19, TypeScript. One framework for the marketing site, the app, and the API routes. Server components keep data on the server.

Supabase. Postgres, Realtime, Auth, and row-level security in one place. RLS is on every table, with a narrow server-only client for admin operations; the service role key never reaches the client.

Stripe. Checkout, Customer Portal, and webhooks. Billing is never rebuilt. Subscription tier (from Stripe) is separate from operational role (staff/admin), and all gating goes through one effectiveTier() helper, always server-side.

Twitch and Discord as adapters. The two platforms streamers actually live on implement one interface. New platforms plug in without branching UI or session code. The Discord bot runs on HTTP Interactions rather than a gateway socket, so there’s nothing always-on to keep alive, and it reuses the same pure randomizer logic as the web app.

One object, many surfaces. A poll or a session is a single entity whether it’s created from the dashboard, Twitch, or Discord. One derived tally, one source of truth, no per-surface forks.

Encrypted third-party tokens. Twitch OAuth tokens are AES-256-GCM encrypted at rest. EventSub webhooks are HMAC-verified and deduped.

CascadeDS. The entire UI is built on the same component system and token layer as every other Empac product. No Tailwind, no second library. The palette is redefined once at the root and the whole system recolors from it. Each hue has one job: indigo for everything structural, violet for glow and “Pro” moments only, gold reserved for the token economy so it always means currency.

AI-assisted development. Claude Code handles the bulk of implementation. Architecture and product decisions are Britton’s.

What’s live now

  • MK8DX and Mario Kart World randomizers (casual and competitive modes)
  • Live lounge scoring, FFA and team modes
  • Five tournament formats, including Heat→Mains ladders and championship seasons
  • Pokémon TCG companion app
  • Twitch chat bot, channel points, OBS overlay, and lobby viewer
  • Discord bot with slash commands, rich embeds, and a Discord Activity
  • The Hub session engine, public /live page, wheel spinner, cross-platform polls
  • Arcade Token economy: predictions, awards, bounties, leaderboards, picks and bans
  • Comms Center, follows, presence, notifications, public profiles with theming
  • Trust and safety: reporting, blocking, moderation, appeals
  • Stripe subscriptions with tier gating, staff/admin tooling
  • Cookie consent, GPC, DSAR, lifecycle email

In progress

  • Walk-up anthems: the data model and settings UI are shipped; the playback wiring is not finished yet
  • Additional randomizers and game modes (Smash Bros, Mario Party, Jackbox, board games)
  • GameShuffle Live Hub, a shared-screen experience for in-person game nights

Where it stands

GameShuffle is live at gameshuffle.co, built for the communities Britton streams with first and open to any streamer who wants to run a better game night. The platform is designed to favor engagement over audience size: a 12-person stream with everyone participating scores higher than a 500-viewer stream where two percent do. The roadmap stays on that line: more games, more modes, and more ways for a community to play along.

Next.js 16SupabaseStripeTwitch EventSub + HelixDiscord Interactions APICascadeDSVercelCloudflare Turnstile + R2MailerSendSentryClaude Code
  • Running a closed-loop token economy that can't drift: balances are derived from an append-only ledger and never stored, spends are atomic under a lock, and there's no way to go negative.
  • Live lounge scoring with a full lobby writing at once. Each player writes only their own placement row, so simultaneous scoring has zero write contention.
  • Making Twitch and Discord feel like one product. Both implement a single PlatformAdapter interface, and one event publisher fans domain events out to every bound platform.
  • Keeping the economy clear of gambling classification. Arcade Tokens are free to earn, have no monetary value, and unlock cosmetic rewards only.
  • Mid-stream mobile use. Players are holding controllers and glancing at phones, so every interaction has to work one-handed in under three seconds.