--- # nuzlocke-tracker-sm1b title: Game Data Models & Types status: completed type: task priority: normal created_at: 2026-02-04T15:44:08Z updated_at: 2026-02-05T12:33:38Z parent: nuzlocke-tracker-f5ob blocking: - nuzlocke-tracker-k5lm - nuzlocke-tracker-0q8f - nuzlocke-tracker-hm6t - nuzlocke-tracker-8fcj --- Define the core data structures and TypeScript types for the application. ## Checklist - [x] Define Game type (id, name, slug, generation, region, boxArtUrl, releaseYear) - [x] Define Route/Area type (id, name, gameId, order) - [x] Define Pokemon type (id, nationalDex, name, types, spriteUrl) - [x] Define Encounter type (id, runId, routeId, pokemonId, nickname, status, catchLevel, faintLevel, caughtAt) - [x] Define NuzlockeRun type (id, gameId, name, status, rules, startedAt, completedAt) - [x] Define RuleSettings type (already existed in rules.ts) - [x] Define RouteEncounter type (id, routeId, pokemonId, encounterMethod, encounterRate) - [x] Define EncounterStatus and RunStatus discriminated union types ## Notes - Keep types flexible for future expansion - Consider using discriminated unions for status types