the challenge
Every film has them: the actor you've seen in twenty movies and could never name. Oh It's That Guy turns that feeling into a game. I built it alone, in the evenings, but that wasn't a reason to cut corners. It had to follow four rules:
- Near-zero idle cost. It costs close to nothing when nobody is playing.
- Fast on a phone. It answers quickly from anywhere, mobile first.
- Rebuildable. All the infrastructure is code, so it can be recreated from scratch.
- Hands-off delivery. Every push to
maindeploys the client with no manual steps.
how it plays
The game is built for a phone held in one hand, in the few seconds you'd otherwise spend scrolling. In Standard mode you get five actors and thirty seconds in total. For each face you pick the right movie out of three. A wrong answer costs three seconds, and the score rewards both accuracy and speed. Director's Cut stretches it to ten rounds and mixes the questions: four actor-to-movie, four movie-to-actor and two true-or-false.
A wrong pick turns red, the right one turns green, and you move on. The dark cinema backdrop and the yellow speech bubble give it personality without slowing anything down.






the architecture
Nothing is generated while someone plays.
TypeScript pipelines pull actors, movies and popularity from the TMDB API, build complete game sets and store them in MongoDB Atlas. At play time, three Lambda functions read those game sets and a fourth stores play events. A round costs one small query, so the game stays fast and the bill stays close to zero.
The client is a React Router single-page app, installable as a PWA, on S3 behind CloudFront. Every AWS resource lives in Terraform: the bucket and distribution with origin access control, the certificate and DNS, API Gateway, the functions and their container registry. GitHub Actions ships the client on every push to main.
a week to production
- 12 Sep 2025. A Turborepo monorepo with a Vite client.
- 16 Sep. The first playable game UI.
- 18 Sep. Fuzzy matching on answers. The first version had typed answers, so close enough had to count.
- 19 Sep. CI/CD and AWS: GitHub Actions, S3 and CloudFront, all in Terraform.
- 20 Sep. GA4 events, a mobile-first layout and an installable app.
- 12 to 13 Oct. Pre-generated game sets, a new endpoint to serve them and two game modes.
a year of play
Google Analytics has tracked the game since its launch on 20 September 2025. Most players arrived in the first two weeks, when it got shared around, and the ones who liked it kept going: 210 players hit "Play again" 596 times.
1,115
players since launch
Audience
1,757
games started
Rounds played
64%
of visitors started a game
Conversion
250
players on launch day
Peak
the audit
Nobody had ever reviewed this codebase. In May 2026 I came back to it with coding agents. The first change hardened the API: a CloudFront function now adds the API key at the edge, so it never ships in the browser bundle, and every Lambda rejects requests without it.
Then I asked for an audit. The agents wrote four fix plans, for the backend, the client, the infrastructure and the pipelines, plus a UX evaluation. Every issue came with the file, the problem and a proposed fix, ranked by priority. Some of what they found:
- Silent failures. Lambda handlers had no error handling, so a database timeout became a bare 502 that the browser reported as a CORS error.
- Two CORS setups. The rules at the gateway contradicted the ones inside the functions.
- A seed that never seeded. A debug flag in a seed script silently skipped every write to the database.
- Unlabeled buttons. Icon-only buttons had no label for screen readers.
Those plans are now the game's backlog, already sorted by what to fix first.
the results
Building alone is fast because nobody slows you down, and that's exactly the problem: nobody checks your work either. This project is where my workflow changed. I wrote the first version by hand in a week, and agents reviewed it like a careful teammate would, finding real bugs I had shipped. Now that review step is part of everything I build, from day one instead of eight months later.
7
days from first commit to production
Shipping pace
97
commits, almost all by hand
Built alone
5
audit reports written by agents
Reviewed later


