I build interactive experiences that earn their place.
Web development for the design-led team
Full-stack developer with a background in games, which taught me how to use pacing, feedback and a clear next move to bring visitors to the signup or sale.
I own projects and keep them moving. Finding answers, flagging risks early, and don't wait to be asked.
Tech & tools
- TypeScript
- React
- Figma
- Next.js
- Motion
- Tailwind
- Supabase
- Claude
- Unity
Recent work

MARVEL Tōkon Character SelectorLaunch campaign experience, built to the game's brand
Given static designs, I authored every transition and animation using in-game footage as reference so it feels like the game's own UI.
Shipped to 103 locales as a key moment on the game's marketing page. React, Tailwind and (Framer) Motion as a self-contained, portable experience that can be dropped into any existing page and consumes content from the CMS.

ShotpotPhoto gallery SaaS for race events
Shotpot is a SaaS product that began with dozens of discovery calls with race organisers and photographers to understand the problem space. Every screen and flow got wireframed in Figma for fast iterations, and I conducted user-testing sessions with photographers (the end users) to refine the UX.
Built with Next.js and Supabase. The whole app's UI lives in Storybook as pure React components. Comprehensive unit testing (Jest), Playwright e2e tests with a full-journey smoke test that runs on CI before promoting a build to production.
Spent a silly amount of time getting the gallery view (the core of the product) highly performant with thousands of photos with a virtualization/windowing engine for seamless browsing.

Psychometric assessment gamesSeven games for a testing start-up, and the engine under them
Seven browser games measuring attributes like visual search, problem solving and typing speed. The gameplay, visuals, motion and interaction were built end to end and integrated into the client's platform along with a shared framework that managed rendering, scope capture and the candidates flow to the results.
Worked with a psychometrics expert for the games to be used as a measuring instrument.

PlayStation®5 brand campaignHomepage takeover on playstation.com
The takeover opens from an eye-catching banner to a full-page experience and plays the campaign's social videos in a Reels/TikTok-style stage with a call to action.
Six figures of attributed revenue, with a 7% click-through among visitors who opened it, measured A/B.

Clay Habit CalendarA printed wall calendar you design in the browser
Clay is a wall calendar for tracking habits. The landing page goes straight into a live editor to build your Clay: pick your habits, personalise with your name and a theme.
Uses the same rendering code in-browser to produce the 12 pages for sending to the printer.
More projects

Ghost of Yotei Bamboo StrikeA slicing minigame that gets easier every time you miss
- React
- Tailwind
- Motion
- Figma
Full-page experience for the game release in a playable format: a slicing minigame that tests the visitors accuracy and speed, like it does in-game.
I built the failure states in a way that gets easier on every miss, to account for visitors with dexterity issues, or just using their phone one-handed on the bus.

Clinic FinderPatient-facing search built onto a client's existing stack
- Next.js
- TypeScript
- WordPress
- Figma
A finder that searches by location, clinician, treatment or concern, and passes qualified leads through to the client's HubSpot.
Built as a Next.js frontend on the WordPress and HubSpot infra they were already running.

EmojisnatchA multiplayer browser game that logs you in with Discord
- Unity
- C#
- React
A game for collecting the custom emojis. Sign in with Discord, then race everyone else on the server to grab them.
Unity compiled to WebGL, with Firebase holding the live state so every player sees the same board at the same moment.

Mystery Match VillageShipped mobile game, 100K+ downloads
- Unity
- C#
A match-3, world-building and hidden object game that shipped to over 100,000 downloads.
I worked as a generalist across UI, gameplay, liveops and internal tooling, inside a small engineering team with a strict review process.

What's That WordleProgrammatic SEO experiment, top-ten in seven days
- Vue
- Nuxt
- TypeScript
Wordle's answers sit in the game's own source, six years ahead. I pulled all 2,309, ran each through a dictionary API, and pre-generated a page per word.
By the time anyone searched "what does epoxy mean wordle", the page had been indexed for weeks, which is how it beat the outlets writing theirs on the day. 10,000 impressions in the first week.

Climate StationA century of climate data, explorable in VR
- Unity
- C#
Console VR experiences built from real climate data; NASA, NOAA and IPCC processed and visualized as a globe you can rotate and scrub the timeline.
Built in Unity with shader work for rendering the globe and atmosphere.