Personal Project / Empac
In ProgressGameShuffle
A game-night platform for streamers, friend groups and Discord communities, built solo from database to overlay.

The Problem
I stream on Twitch occasionally, and usually I'm playing Mario Kart with my community. As a way to spice up the races (and also get viewers off their normal kart combos), I came up with an idea of building my own randomizer that I could use in the middle of my stream.
There were plenty of randomizers already out there… but I realized that most of them couldn't handle multiple racers well, there wasn't an easy way to append the app into OBS or Streamlabs, usually combo randomizers were separate from track randomizers, and more. There were also a few randomizers that were quite out of date… and specialized in just one of the Mario Karts, not multiple in case I wanted to switch games.
That's how GameShuffle started: a simple Mario Kart 8 Deluxe randomizer. It's grown into a full game-night platform. There are randomizers and tournaments across Mario Kart, Mario Party, Smash and more, party games I designed myself, a daily puzzle, a Twitch overlay, and an app that runs inside Discord. A streamer can run a night for their chat, and a group of friends can run one from the couch. I built all of it solo, from the database to the overlay.
The Approach
From a randomizer to a platform
The first version was just a Mario Kart 8 Deluxe randomizer I could drop into OBS as a browser source. Once that was working, I got more interested in the part around it: what actually happens on a game night, and how do you get viewers playing along, keeping score, and coming back the next week?
That's what turned it from a static site into a real product. I moved everything onto Next.js, React, and Supabase and built it into something a streamer runs and their viewers join straight from Twitch or Discord chat, no account needed. All of it is mine end to end: the database and its row-level security, Stripe billing, both platform integrations, the OBS overlay, and the marketing site.
The decisions that mattered
The design language
The UI runs on CascadeDS, my own design system, but I pushed it to give GameShuffle a look of its own. Most design systems chase consistency and reusability, which is the right instinct, but lean on that too hard and everything you build ends up looking like everything else you've built. So the thing I cared about most here was branding GameShuffle without cracking the shared components underneath. That's only gotten more important now that anyone can have AI generate a decent-looking screen in a minute. Staying flexible enough to brand it your own way, without the core coming apart, is the part that's genuinely hard.
How I use AI here
Claude Code does a lot of the actual building: scaffolding components, wiring up API routes, iterating on the schema. What it doesn't do is the thinking. Every requirement, every architecture call, and every decision above, I work out and write up myself, then hand off the execution. I want to be clear about that, because plenty of AI-built products let the model decide what to build and how all in one go. Here it's more like a very fast pair of hands, and I'm the one drawing up the plan.
The Result
What it is today
One account, three places to play: the website, a Twitch stream, or inside Discord.
In progress
Chat Brain, a survey game built from real people's answers. Trivia Nights, hosted trivia for game nights. The GameShuffle Shop, with curated Pokémon card packs. And walk-up anthems for players. The foundation is built, and playback is next.
Where it stands
It's live, and I'm still the only one building it. Next is opening up the in-progress pieces and getting GameShuffle in front of more streamers and Discord communities.
See it for yourself.
The randomizers, the Daily Shuffle and the party games are free to play. No account needed.
Play on GameShuffle →The Details
Tech Stack
Key Challenges
- Getting the token economy right without letting balances drift. A ledger of events means every token is traceable, which matters when it's the currency people are playing for.
- Making one product work across the website, Twitch and Discord without building it three times.
- Drawing the line between free and Pro so the free plan stays worth using.
- Using AI inside the product without letting it make the calls that matter to players.










