Skip to content
All projects
Live · Remake

Pokepedia

A silhouette game styled like a Game Boy battle: name the Pokémon, throw a Poké Ball, and it goes into your sticker book. A Pokédex of the original 151 sits next to it. Win a Pikachu and you can take it into a turn-based battle against Blastoise, a separate Unity project that runs inside the page.

Game Boy–style battle: a Pokémon silhouette, the trainer's back and the command box
Type
Web app + Unity WebGL battle · KO / EN / JA
Period
Sep – Oct 2026
Runs on
Vercel + Supabase, Tokyo · Cloudflare Pages

About

A silhouette appears; name it in any of the three languages and the trainer throws a Poké Ball. Miss three times and the run is over. No sign-up: you play as a guest, and linking Google later keeps your stickers and scores.

Win a Pikachu and it fights Blastoise in a turn-based battle. The battle is a separate Unity project, pokepedia-unity, built for WebGL and opened in an iframe. It also runs on its own at battle.pokepedia.dev.

What it does

Silhouette quiz
Fight to answer, Hint for half the name, Skip, Run — arrow keys and Z work too. Pikachu, 피카츄 or ピカチュウ all count.
Sticker book & ranking
151 slots to fill, shiny ones included, and a leaderboard of everyone's best run.
From quiz to battle
Without a Pikachu sticker, the first question is Pikachu. The reward screen and the Pikachu sticker in your book both open the battle.
Unity turn-based battle
Pick Tackle, Thunderbolt or Thunder against Blastoise. Speed decides who goes first; type matchups, accuracy and critical hits decide the damage. Rain and fog over a pixel-art field, 2D lights, and sound effects I synthesized myself.

Architecture

Pokepedia — Architecturepokepedia-unity · separate repoPlayerNext.js · VercelTokyo · pages, Server ActionsSupabase PostgresTokyo · RLS, RPCUnity battleWebGL · Cloudflare PagesSync scriptRun once by handPokeAPISupabase StorageServed to the pagePlayPages · RPCiframe · postMessagePokémon dataStats · namesArtwork
The web app and the battle are separate projects. The page opens the Unity build in an iframe and passes the Pikachu over postMessage. Pokémon data was copied from PokeAPI once, so nothing outside is called at runtime.

How it's built

Web · App
Next.js 16 (App Router, RSC, Server Actions) · React 19 · TypeScript
Web · UI
Tailwind CSS v4 · Motion · Zustand · next-intl
Web · Data
Supabase — Postgres, Auth, Storage · Row Level Security · RPC · pg_cron
Web · Testing
Vitest · Playwright
Web · Hosting
Vercel (Tokyo) · Supabase (Tokyo) · Analytics · Speed Insights
Battle · Engine
Unity 6.3 LTS · C# 9 · uGUI · TextMesh Pro
Battle · Graphics
URP 2D — Light2D, post-processing · custom shader · HTML/CSS start and VS screens
Battle · Testing
NUnit · dotnet test · GitHub Actions
Battle · Hosting
WebGL (pre-compressed Brotli) · Cloudflare Pages · iframe + postMessage
The game's title screen, now the front page
A shiny sticker for a correct answer
Charizard on a holographic detail card
Sticker collection
The Unity battle: Pikachu faces Blastoise on a rainy field

Pokémon and related names and artwork are © Nintendo, The Pokémon Company, Creatures Inc. and GAME FREAK inc. An unofficial, non-commercial fan project.