-
-
Battle Screen
-
Get quizzed on your diff for your attack to hit
-
Answer incorrectly and your attack gets blocked
-
Win or answer 8 questions correctly to push
-
Answer more than 2 wrong and your push gets blocked
-
Leaderboard for friendly competition
-
Seamless login with resend
-
Share your battle link to let others battle your diff, gain understanding
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.
- You run
git push→ the hook fires before anything leaves your machine - Gemini analyzes your diff and generates 8 questions specific to your actual code — architecture choices, logic, security implications
- Two Gen 5 Pokémon teams are built from live PokeAPI data
- A browser battle opens — answer correctly to deal damage
- 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)




Log in or sign up for Devpost to join the conversation.