418: I'm a Teapot

posted Originally published at dev.to 3 min read

This is a submission for the DEV April Fools Challenge

What I Built

418: I'm a Teapot (and You're a Bad Gamer)

A high performance, SEO-optimized, AI integrated gaming platform built solely to ensure the player
never wins.

You control a teapot. You run. You jump. You die. On every death, Gemini analyzes your failure and
adjusts the physics to be slightly more insulting next time. There is no finish line. There never was.

Key features:

  • Endless Runner — one button to jump. Except it's not always that button.
  • Rotating Controls — the jump key silently changes every run. The HUD shows last run's key. This
    is documented nowhere.
  • Input Gaslighting — every ~10th jump has a 200ms delay. Wall contact permanently degrades your
    grip. Mash the keyboard and gravity drops to near zero — the teapot floats away.
  • AI Vibe Check — on every death, your stats (jumps, wall hugs, rage mashes) are sent to Gemini.
    It returns new physics values and a personalized roast. Gets meaner over time.
  • Global Loss Leaderboard — powered by Firebase. Tracks deaths, not wins. "You are ranked #3 most
    pathetic globally."
  • Fake Patch Notes — v2.4.1 changelog includes "Fixed bug where player could win (unintended)" and
    "Removed finish line (was causing confusion)."
  • Fake Loading Tips — "Tip: There is no finish line. There never was."
  • Broken Controls Page — /controls documents the controls incorrectly. Never acknowledged.
  • Support Ticket System — after 5 deaths a "Report a Bug" button appears. Submit a complaint,
    receive HTTP 418 and a Gemini-generated gaslighting response.
  • Share Your Shame — one click shares your death count and AI roast to X, Facebook, WhatsApp,
    Telegram, Reddit, or LinkedIn.
  • 418 Redirect — survive 90 seconds and get redirected to /418:
    {"status": 418, "message": "I'm a Teapot", "reason": "Server is currently brewing. Your victory has been lost in transit."}

Demo

Run here

Code

GitHub repo

How I Built It

Stack:

  • Next.js 16 — frontend + API routes. The game UI and the AI backend live in the same codebase,
    deployed as a single container.
  • Phaser 3 — 2D game engine running in a dynamically imported client component (no SSR). Handles
    physics, collision, procedural obstacle generation, and all the gaslighting mechanics.
  • Gemini 1.5 Flash (primary) + Groq / Llama 3.3 70B (fallback) — on every death, player action
    data is POSTed to /api/judge. The AI returns a JSON payload with new physics values (gravity, speed,
    jumpForce, mass, drag, delayEvery) and a personalized roast. The prompt explicitly instructs it to get
    meaner with each death.
  • Firebase Firestore — global leaderboard. Every death writes a record. Rank is calculated by
    counting sessions with fewer deaths.
  • Google Cloud Run — the entire app is Dockerized and deployed as a single container. Because some
    problems deserve enterprise-grade infrastructure.

The physics are real. jumpForce / mass determines jump height. drag affects mid-air deceleration.
Gemini can increase your mass to make your jumps pathetically short, or drop gravity to 50 so the
teapot floats off screen. The game is genuinely engineered to be bad.

The support ticket endpoint returns HTTP 418 by design. This is not a bug. It is the only honest thing
in the entire codebase.

Prize Category

Best Ode to Larry Masinter, The player character is a teapot. The win condition redirects to a raw
418 JSON response. The support system returns 418. The game is named after RFC 2324. Larry Masinter
wrote a joke in 1998 that has never been removed from the spec. This game is its spiritual successor.
It is completely useless. It took real engineering to make it this bad.

Best Google AI Usage. Gemini is not a hint system or a chatbot, it is a passive-aggressive game
designer that watches you fail and makes the next run worse. It also generates your death roast and
your support ticket rejection. Every interaction with the AI is designed to make you feel worse about
yourself. This is the correct use of AI.

3 Comments

1 vote
1
1 vote
1 vote

More Posts

I’m a Senior Dev and I’ve Forgotten How to Think Without a Prompt

Karol Modelskiverified - Mar 19

I Wrote a Script to Fix Audible's Unreadable PDF Filenames

snapsynapseverified - Apr 20

Bug Hunter: I Turned Every Website Into A Debugging Horror Game

toannhu - Apr 14

CAPTCHA for Robots: A Verification System That Humans Will Never Pass

Shirisha - Apr 7

The Most Annoying Form Ever...

Riyazuddin Khan - Apr 30
chevron_left

Related Jobs

View all jobs →

Commenters (This Week)

6 comments
2 comments
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!