I’m a visual learner, so I set out to see how far you can push a single 3B step as a fun thing people actually use, rather than a pipe between two APIs. The answer, it turns out, is a playable arcade game. Spud Racer is one React step in a 3B workflow served at its own HTTP route, tenant-authenticated, marked as a webpage so it shows up on the Links page like any other endpoint. You open the link, and you’re driving the Spudmobile.
![]()
The premise is that you’re Spud, a flat-capped potato in a brass-and-mahogany race car, hurtling down an infinite cobblestone country road in the Irish rain. You steer between three lanes to dodge boulders, potholes, and speedy puddles to collect four-leaf clovers, mugs of tea, and gold for points and boost.
Five knocks and you’re out! A row of spud-hearts tracks your remaining lives. Speed and rainfall ramp up the further you get, then game over is a soft tumble into a three-initial entry screen for the Top Spud High Scores board.
Everything is drawn procedurally on an HTML canvas as pixel art: the road perspective, the weather, the vehicles, the rain streaks. There’s a chiptune Irish jig generated in the browser with the Web Audio API, a clover-rain effect on the title screen, and a wordmark built out of a stack of layered CSS text-shadows so the letters look carved rather than printed. Scores persist in localStorage, and there’s one small easter egg: our fearless leader, Hinchy, sits at the top of the leaderboard and quietly pulls ahead again any time someone matches his score. ![]()
The part I found genuinely interesting is how little scaffolding this needed. No build config, no hosting, no separate frontend repo, no auth code. A React step in 3B is a bundle, a route, and an auth mode in config.toml; the platform handles the rest. Which means the same primitive I’d use for an internal dashboard or a submission form also gets me a shareable arcade cabinet in a browser tab. Roughly 2,000 lines across the game loop, the React shell and the audio, and the only “deployment” was pushing the workflow live. ![]()
It’s safe to say… I love 3B
![]()


