Projects · 2026

World Cup Fighter

A silly cartoon fight simulator — 55 teams, procedural sound, shareable battle cards.

React + TypeScript · framer-motion · Web Audio API · html2canvas
Current statusLive at /worldcupfighterPick two teams and hit FIGHTSource on GitHub
World Cup Fighter — screenshot
Brazil v China, moments before kickoff. Scientifically inaccurate, emotionally correct.

Problem

None whatsoever. The World Cup was on, and the world needed a way to settle matches by cartoon combat.

Context

A palate-cleanser project — the kind you build to stay in love with building. It shares the site's infrastructure but none of its seriousness.

Design

Two fighters, one arena, one button. Fifty-five teams with flags and colours, a battle engine that scripts each round, and a result card designed to be screenshotted and argued about in group chats.

Implementation

React and TypeScript inside this site's Next.js app. Animations by framer-motion; every sound is generated procedurally with the Web Audio API — no audio files shipped at all. Share cards are rendered with html2canvas so a battle result travels as an image.

Lessons learned

Procedural audio is criminally underused: zero assets, instant load, and punches can vary every time. And a share card is the whole growth strategy for a toy — build the screenshot first.