Gotta Git'em All (PokePush)

Inspiration

AI tools make it effortless to ship code you don't fully understand. We called this knowledge debt — the invisible tax of writing code you don't actually own. PokéPush turns git push, a moment every developer already does dozens of times a day, into a mandatory comprehension check. Not a quiz. A battle.


What It Does

PokéPush is a git pre-push hook that blocks your push until you win a Pokémon battle. Your attacks are answering AI-generated questions about your own diff.

  1. You run git push → the hook fires before anything leaves your machine
  2. Gemini analyzes your diff and generates 8 questions specific to your actual code — architecture choices, logic, security implications
  3. Two Gen 5 Pokémon teams are built from live PokeAPI data
  4. A browser battle opens — answer correctly to deal damage
  5. Win → push proceeds. Lose → blocked.

Peer review mode: After winning, generate a Cloudflare Quick Tunnel link and send it to a teammate. They fight the same battle against your diff. If they can't answer questions about your code, they haven't reviewed it.

Social layer: Wins are tracked in MongoDB and surfaced on a friends leaderboard. Magic-link auth (via Resend) means zero-friction onboarding.


Peer-to-Peer Learning

Mode Implementation
Solo Every push is a solo battle — you learn your own code, at your own pace, forced by the mechanic
Buddy Share your review tunnel URL; your teammate learn about your changes and diff

The curriculum is infinitely variable because it's generated from real code. A junior dev gets beginner questions. A senior engineer pushing a DB migration gets architecture-level questions. Difficulty scales automatically.


Tech Stack

Layer Technology
CLI Python (asyncio, motor, resend)
Backend FastAPI
Frontend React + Vite
AI Gemini API — question gen + function calling for AI opponent moves
Pokémon data PokeAPI (stats, moves, Gen 5 animated sprites)
Database MongoDB
Tunneling Cloudflare Quick Tunnels
Auth Resend magic links

What's Next

  • Team battles — a PR requires a majority of the team to win before the push is accepted
  • GitHub Action — CI version triggerable on PR open, no local setup needed
  • Community Skill tracks — the user-submitted curriculum system with voting and platform embedding
  • Evolved Pokémon for win streaks — visual progression tied to consistent learning
  • VS Code extension — trigger a mini-battle before saving; the tightest possible feedback loop

PokéPush CLI

Usage:

  • pokepush install - Install git hook in current repo
  • pokepush uninstall - Remove git hook
  • pokepush battle - Run battle (called by git hook)
  • pokepush review - Start review tunnel after a push
  • pokepush login - Log in with magic link
  • pokepush logout - Log out
  • pokepush whoami - Show current user
  • pokepush add - Add a friend by their ID
  • pokepush friends - List friends and their win counts
  • pokepush leaderboard - Show you + friends ranked by wins
  • pokepush serve - Start server (needed during login)

Built With

+ 1 more
Share this project:

Updates