Commit Graph

23 Commits

Author SHA1 Message Date
b434ab52ae Add beans for seeding improvements, pokemon forms, and admin UX
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:29:06 +01:00
c5a2d5c0e6 Mark evolution and admin panel beans as completed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:26:53 +01:00
9728773a94 Add pokemon evolution support across the full stack
- Evolution model with trigger, level, item, and condition fields
- Encounter.current_pokemon_id tracks evolved species separately
- Alembic migration for evolutions table and current_pokemon_id column
- Seed pipeline loads evolution data with manual overrides
- GET /pokemon/{id}/evolutions and PATCH /encounters/{id} endpoints
- Evolve button in StatusChangeModal with evolution method details
- PokemonCard shows evolved species with "Originally" label

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:26:49 +01:00
c8d8e4b445 Fix ambiguous foreign keys on Pokemon.encounters relationship
Encounter has two FKs to pokemon (pokemon_id and current_pokemon_id),
so the reverse relationship needs an explicit foreign_keys argument.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:20:19 +01:00
001ee98bb5 Rewrite fetch_pokeapi.py to read from local submodule instead of PokeAPI
Replace all pokebase API calls with local JSON file reads from the
PokeAPI/api-data git submodule, removing the network dependency and
pokebase package. The script now runs with stdlib Python only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:17:03 +01:00
80369daab5 Add PokeAPI/api-data as git submodule for local seed data
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:08:40 +01:00
f251903874 Update seeding refactor bean to use PokeAPI/api-data JSON instead of CSV
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:06:33 +01:00
71a8f2e695 Add bean for refactoring seeding to use PokeAPI CSV data via git submodule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:01:56 +01:00
6bff1c8612 Add CLAUDE.md with post-task commit prompt instruction
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:37:47 +01:00
55e6650e0e Add admin panel with CRUD endpoints and management UI
Add admin API endpoints for games, routes, pokemon, and route encounters
with full CRUD operations including bulk import. Build admin frontend
with game/route/pokemon management pages, navigation, and data tables.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:36:19 +01:00
a911259ef5 Add pokemon status management with death tracking
Implement status change workflow (alive → dead) with confirmation modal,
death cause recording, and visual status indicators on pokemon cards.
Includes backend migration for death_cause field and graveyard view
on the run dashboard.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 18:36:08 +01:00
Julian Tabel
628c621fa9 Add beans for evolutions, area grouping, UX pass, and gift encounters
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:28:59 +01:00
Julian Tabel
689c1de107 Add local Fire Red box art image
Store box art in public/boxart/ to avoid slow external image loads
from Bulbagarden.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:28:54 +01:00
Julian Tabel
66b3c9286f Add run dashboard and encounter tracking interface
Run list at /runs shows all runs with status badges. Run dashboard at
/runs/:id displays stats, active team, graveyard, and rule badges.
Encounter tracking at /runs/:runId/encounters shows route list with
status indicators, progress bar, filters, and a modal for logging or
editing encounters with pokemon picker.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:28:50 +01:00
Julian Tabel
982154b348 Add game selection screen and new run wizard
Build a 3-step wizard at /runs/new: select game (themed gradient cards
grouped by generation with filter tabs), configure rules (reuses existing
RulesConfiguration), and name/create run. Remove standalone Games and Rules
pages since they're now integrated into the wizard flow.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:09:25 +01:00
Julian Tabel
7c65775c8b Add frontend API client and TanStack Query hooks
Install @tanstack/react-query, create a fetch-based API client with typed
functions for all endpoints, and add query/mutation hooks for games, pokemon,
runs, and encounters. Includes Vite dev proxy for /api and QueryClientProvider
setup.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:09:14 +01:00
Julian Tabel
13e90eb308 Add REST API endpoints for games, runs, and encounters
Implement 13 endpoints: read-only reference data (games, routes, pokemon),
run CRUD with cascading deletes, and encounter management. Uses Pydantic v2
with camelCase alias generation to match frontend types, and nested response
schemas for detail views.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:09:05 +01:00
Julian Tabel
cfd4c51514 Add game data seeding from PokeAPI with level ranges
Seed the database with Pokemon game data for 5 games (FireRed, LeafGreen,
Emerald, HeartGold, SoulSilver) using pokebase. Includes Alembic migrations
for route unique constraints and encounter level ranges, a two-phase seed
system (offline fetch to JSON, then idempotent upserts), and Dockerfile
updates for the seed runner.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 15:08:54 +01:00
Julian Tabel
08c05f2a2f Add frontend TypeScript types for game data models
Define Game, Route, Pokemon, RouteEncounter, Encounter, and NuzlockeRun
types mirroring the backend schema, with EncounterStatus and RunStatus
discriminated union types.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 13:34:21 +01:00
Julian Tabel
d94364d6ce Add database schema with SQLAlchemy async + Alembic migrations
Set up PostgreSQL database layer with async SQLAlchemy 2.0 and asyncpg driver.
Implements 6 core tables (games, routes, pokemon, route_encounters, nuzlocke_runs,
encounters) with foreign keys, indexes, and an initial Alembic migration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 13:29:34 +01:00
a87d2ef523 add user auth epic 2026-02-04 17:22:41 +01:00
Julian Tabel
6ee53a0533 Initial setup of frontend and backend 2026-02-04 17:13:58 +01:00
259c200d93 Initial commit 2026-02-04 16:28:10 +01:00