All projects

Starting Six

Plan your Pokemon playthrough team before you start the game.

Team planner for Pokemon games with type coverage analysis, move/ability selection, and a searchable Pokedex powered by PokeAPI data synced to a local database.

Demo credentials

Email: demo@example.com Password: demo1234!

Read-only mode — data resets weekly. Access restricted to US/Canada.

Tech Stack

Next.js 16 TypeScript SQLite Drizzle ORM Tailwind CSS shadcn/ui Better Auth PokeAPI Vitest

Why I Built This

Every Pokemon playthrough starts with the same question: what six Pokemon should I use? Existing team builders are either online-only or focused on competitive play. This app is for casual players who want to plan a balanced team before they start.

Features

  • Full Pokedex browser with search, type/generation/stat filters
  • Playthrough management with 6-slot team builder
  • Type analysis engine (18x18 effectiveness matrix, coverage gaps, role distribution)
  • Move and ability selection from complete learnsets
  • Tera type customization per team member
  • 138 tests covering the analysis engine and API routes

Architecture

PokeAPI data is bulk-synced to SQLite on first run (6-stage pipeline: Pokemon, species, types, moves, abilities, learnsets). After sync, the app is fully offline-capable. The analysis engine is pure functions with no side effects, making it easy to test.

Key Decisions

Bulk sync over live API calls

PokeAPI is slow for individual requests. Syncing everything upfront means instant search and filtering. The 6-stage pipeline handles 1000+ Pokemon with progress tracking.

Pure function analysis engine

Type effectiveness, coverage analysis, and role distribution are all pure functions. This made it trivial to write 62 tests for the analysis module.

Same stack as Hoard

Reusing the same Next.js + SQLite + Drizzle + Better Auth stack meant I could scaffold the entire project in hours rather than days.