I built a bird identification game called Birdie, and it’s live at birdie.augustwheel.com. Here’s how I went from “wouldn’t it be cool if…” to “oh wow, this actually works.”

The Idea

The concept was simple: What if learning about birds was as addictive as Duolingo?

So I built Birdie—a game where you look at beautiful bird illustrations and guess their names. Get three perfect scores in a row and you earn the “Certified Level 1 Birder” badge. No daily limits, no timers. Just you, some gorgeous birds, and the satisfaction of learning something new.

What I Actually Built

The Game Loop

  • You get 9 birds per game (3 sets of 3 birds each)
  • Each bird has 3 name options—one right, two decoys
  • Select your answers, hit submit, watch the correct birds fly away with a satisfying whoosh
  • See your score and learn fun facts about the birds
  • Earn badges as you improve

The Tech Behind It

  • Frontend: React with TypeScript (built fast with Vite)
  • Backend: Node.js running a simple API to collect email signups
  • Database: SQLite (tiny, powerful, no separate server needed)
  • Hosting: Docker containers on AWS, secured with Let’s Encrypt

The whole thing is containerized with Docker, so it runs exactly the same whether I’m testing locally or it’s live on the internet.

The Messy Middle

Building something is never as smooth as the final result suggests. Here are the real problems I hit:

SSL Certificate Chaos I tried to start the web server with HTTPS before the certificates even existed. Rookie mistake. Had to restructure the deployment to get certificates first, then start the server. Now it just works, but that one took me down a rabbit hole.

Git Ignoring My Data I accidentally told Git to ignore the bird data file I needed for the game. The deployment script would grab it, the build would fail, and I’d be confused for 20 minutes. Always be specific with .gitignore—use /data/ not data/.

Firewall Blocked Everything The server couldn’t get its SSL certificate because AWS wasn’t letting any traffic through. Had to add inbound rules for ports 80 and 443. Should have checked that first, but hey, now I know.

What I’m Proud Of

It Actually Works — The site loads fast (~1.2s to first content, ~2.1s to be fully interactive). The animations are smooth. The sounds are satisfying. It feels polished

One-Click Deployment — A single script (deploy.sh) handles everything: checking for Docker, creating directories, getting SSL certificates, building images, starting services, and running health checks.

No Login Required — Players can start playing immediately. Everything is saved locally on their device, so no privacy concerns and no friction.

The Numbers

  • 7,800 lines of code across the whole project
  • 27 birds with fun facts you’ll actually want to learn
  • 4 Docker containers running the show
  • ~70-135 MB of memory usage (super efficient)
  • 3 days from “cool idea” to live website
  • ~$10/month to keep it running on AWS

What I Learned

  1. Docker is a game-changer — Once you understand containerization, deploying anything becomes way less scary.
  2. TypeScript catches bugs before users do — Strict typing saved me from so many errors.
  3. Start simple, iterate — I didn’t build a user authentication system for the first version. I just used browser storage. You can add complexity later.
  4. Security matters from day one — HTTPS, rate limiting, input validation—these aren’t optional. Build them in from the start.
  5. AI assistance actually works — I used Claude to pair-program the whole thing. It accelerated development significantly without sacrificing quality or my understanding of the code.

What’s Next

I’ve got ideas:

  • Cross-device progress tracking (so your badges follow you everywhere)
  • Leaderboards (friendly competition)
  • More birds (expanding beyond 27)
  • Difficulty levels (start easy, get harder)
  • Daily challenges with new birds every day

But for now, I’m happy with what’s out there.

Try It

Go play! https://birdie.augustwheel.com

It’s free, no sign-up required (unless you want email updates), and you’ll learn something cool about birds.

What I’m Taking Away From This

The biggest lesson? Just ship it. You’ll learn more from one deployed project than a dozen tutorials. The perfect code doesn’t exist. Deployment isn’t as scary as it seems. And sometimes the best side projects come from asking a simple question: “What if this was fun?”

Happy birding! 🐦

Questions? Feedback? Found a bug? Hit me up at augustwheel.com

Special thanks to Claude (Anthropic) for making this possible—pair programming with an AI genuinely speeds things up.


Discover more from August Wheel

Subscribe to get the latest posts sent to your email.

Trending

Discover more from August Wheel

Subscribe now to keep reading and get access to the full archive.

Continue reading