Project Plateau
Project Plateau: four glass plates, one living valley, and the road back to camp.
Browse Gen 1–3 Pokémon, build teams, and explore ML predictions. Built with Next.js 14 and Supabase.
Translation pending
GamesTypeScript · CSSGitHub @jleo28OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A rebuild of my 2023 ITP-216 final project. The original was a Flask app. This one has Next.js 14, Supabase, two sklearn ML models, and a retro pixel aesthetic.
Live: pokedexpp.vercel.app
Repo: github.com/jleo28/pokedex-plus
| Layer | Choice |
|---|---|
| Framework | Next.js 14 App Router (TypeScript) |
| Styling | CSS Modules, no Tailwind |
| Database | Supabase (Postgres + RLS) |
| ML inference | Vercel Python Runtime (api/predict.py) |
| ML training | scikit-learn 1.4 RandomForest (scripts/train-models.py) |
| Drag-drop | @dnd-kit/core + @dnd-kit/sortable |
| Charts | recharts |
| Data source | PokéAPI (Gen 1–3, fetched once, committed to data/pokemon.json) |
| Fonts | Press Start 2P (local WOFF2), IBM Plex Mono, Inter |
| Deploy | Vercel (Node + Python runtimes) |
git clone https://github.com/jleo28/pokedex-plus.git
cd pokedex-plus
npm install
Create .env.local:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
Run supabase/migrations/001_initial_schema.sql in your Supabase SQL editor. This creates the four tables (pokemon, evolutions, user_submissions, predictions_log) with RLS policies.
npx tsx scripts/seed-supabase.ts
Pokémon data is already in data/pokemon.json. Sprites are in public/sprites/, cries in public/cries/.
npm run dev
# → http://localhost:3000
npx tsx scripts/fetch-pokemon.ts # re-fetch from PokéAPI
npx tsx scripts/download-assets.ts # re-download sprites + cries
python scripts/train-models.py # re-train models (requires Python + scikit-learn)
Two RandomForest models trained on all 386 Gen 1–3 Pokémon:
Models are pickled to api/models/ and served via api/predict.py on Vercel's Python runtime. Cold start is ~20s. Warm requests are under 100ms.
The original version was built for USC ITP-216 (Intro to Machine Learning) in Spring 2023 — a Flask app with a basic Pokédex, a stat predictor, and a team builder that didn't quite work. This is a full rewrite.
MIT