← All projects

Wheel of Oink

A phone spinner wheel for revealing our fantasy football league's fines, with an optional recording for the WhatsApp group.

Wheel of Oink spinner showing fine multipliers and a Zoicam recording panel
The spinner and the recording panel on one screen.

The short version

What it is

Once the fines dashboard made fines accurate, it also made them boring. Wheel of Oink puts the theatre back: a full-screen spinner with genuinely equal odds, sound and a record button, so the reveal becomes a clip for the league WhatsApp.

What I had to steer

The segments are equal and nothing's rigged, otherwise the joke dies. It fits on one iPhone screen with no scrolling. And the name: the app has a ruder one between mates, and here it's Wheel of Oink.

What I wired together

Vite, React and TypeScript on Vercel, Web Audio for the sound, and the camera and microphone APIs for the recording flow.

Where I pushed it

The hard part was camera and microphone permissions in iPhone Safari. It took a couple of real sessions before recording and audio behaved.

The build log

A wheel for the fines

I’d already fixed the TLL fines admin with a proper dashboard. That solved the bookkeeping and made the number completely boring: open a page, see what you owe, close it. A league fine is supposed to sting a little in public, so I built a spinner wheel to put the theatre back.

It’s a single phone screen with no scrolling on an iPhone. The segments are equal and so are the odds, because if it’s rigged the bit stops being funny. A record button turns on the camera and mic before the spin, so the reveal becomes a clip for the league WhatsApp.

The app has a ruder name in the code and between mates. Here it’s Wheel of Oink.

It’s live and it gets used. The Zoicam recording flow took a couple of real sessions of debugging before the camera and audio permissions stopped fighting each other on iPhone.