Initial setup of frontend and backend

This commit is contained in:
Julian Tabel
2026-02-04 17:13:58 +01:00
parent 259c200d93
commit 6ee53a0533
72 changed files with 5687 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
---
# nuzlocke-tracker-0q8f
title: Encounter Tracking Interface
status: todo
type: task
created_at: 2026-02-04T15:44:37Z
updated_at: 2026-02-04T15:44:37Z
parent: nuzlocke-tracker-f5ob
---
Build the main interface for tracking encounters on each route/area.
## Checklist
- [ ] Create route list component showing all areas in the game
- [ ] Display encounter status per route (uncaught, caught, failed, skipped)
- [ ] Build encounter modal/form:
- [ ] Select Pokémon from route's available encounters
- [ ] Enter nickname for caught Pokémon
- [ ] Mark as caught, failed (ran/KO'd), or skipped (duplicates clause)
- [ ] Show route progression (e.g., 15/45 routes completed)
- [ ] Allow editing/updating existing encounters
- [ ] Support marking gift/static encounters separately
## UX Considerations
- Quick entry flow - minimize clicks to log an encounter
- Visual distinction between route types (grass, water, cave, etc.)
- Mobile-friendly for tracking while playing

View File

@@ -0,0 +1,34 @@
---
# nuzlocke-tracker-1iuh
title: Project Setup & Tech Stack
status: completed
type: task
priority: normal
created_at: 2026-02-04T15:43:55Z
updated_at: 2026-02-04T15:55:46Z
parent: nuzlocke-tracker-f5ob
blocking:
- nuzlocke-tracker-sm1b
- nuzlocke-tracker-k5lm
- nuzlocke-tracker-uw2j
- nuzlocke-tracker-dgax
- nuzlocke-tracker-0q8f
- nuzlocke-tracker-hm6t
- nuzlocke-tracker-8tuw
- nuzlocke-tracker-8fcj
---
Set up the initial project structure and choose the technology stack.
## Checklist
- [x] Initialize the project (e.g., Vite + React/Vue/Svelte or Next.js)
- [x] Set up TypeScript configuration
- [x] Configure linting (ESLint) and formatting (Prettier)
- [x] Set up basic folder structure (components, types, utils, data)
- [x] Add Tailwind CSS or chosen styling solution
- [x] Create basic app shell with routing
## Considerations
- Should be a web app for accessibility
- Consider PWA capabilities for offline use
- Keep bundle size small for fast loading

View File

@@ -0,0 +1,30 @@
---
# nuzlocke-tracker-4c31
title: Backend Setup & Framework
status: completed
type: task
priority: normal
created_at: 2026-02-04T15:46:49Z
updated_at: 2026-02-04T16:10:13Z
parent: nuzlocke-tracker-f5ob
blocking:
- nuzlocke-tracker-l7e3
- nuzlocke-tracker-bkhs
---
Set up the backend API project with chosen framework and structure.
## Checklist
- [x] Choose backend framework (Node.js/Express, Fastify, NestJS, Go, Python/FastAPI, etc.) - **Python/FastAPI**
- [x] Initialize backend project
- [x] Set up TypeScript (if applicable) - N/A (Python with type hints via Pydantic)
- [x] Configure linting and formatting - **ruff**
- [x] Set up project structure (routes, controllers, services, models)
- [x] Add environment configuration (.env handling) - **pydantic-settings**
- [x] Set up development server with hot reload - **uvicorn --reload**
- [x] Add basic health check endpoint - `/health` and `/`
## Considerations
- Should match team's expertise
- Consider ease of deployment
- TypeScript preferred for type safety with frontend

View File

@@ -0,0 +1,26 @@
---
# nuzlocke-tracker-55kp
title: Docker Development Environment Setup
status: completed
type: task
priority: normal
created_at: 2026-02-04T16:07:25Z
updated_at: 2026-02-04T16:13:04Z
parent: nuzlocke-tracker-f5ob
---
Set up Docker and docker-compose for local development environment.
## Checklist
- [x] Create Dockerfile for backend API
- [x] Create Dockerfile for frontend (if needed)
- [x] Create docker-compose.yml with services (api, db, frontend)
- [x] Add PostgreSQL service configuration
- [x] Configure volume mounts for hot reload
- [x] Add environment variable handling
- [x] Create .dockerignore files
- [x] Document usage in README
## Notes
- Should support hot reload for development
- Database data should persist between restarts

View File

@@ -0,0 +1,35 @@
---
# nuzlocke-tracker-8fcj
title: Frontend API Integration
status: todo
type: task
priority: normal
created_at: 2026-02-04T15:44:42Z
updated_at: 2026-02-04T15:47:24Z
parent: nuzlocke-tracker-f5ob
blocking:
- nuzlocke-tracker-uw2j
- nuzlocke-tracker-0q8f
- nuzlocke-tracker-hm6t
- nuzlocke-tracker-8tuw
---
Implement frontend services to communicate with the backend API.
## Checklist
- [ ] Create API client/service layer
- [ ] Implement API calls for:
- [ ] Fetch available games
- [ ] Fetch routes for a game
- [ ] Fetch Pokémon data
- [ ] Create/update/delete Nuzlocke runs
- [ ] Create/update encounters
- [ ] Update Pokémon status
- [ ] Add loading states and error handling
- [ ] Implement optimistic updates where appropriate
- [ ] Add retry logic for failed requests
## Technical Notes
- Use fetch or axios for HTTP requests
- Consider using React Query/TanStack Query or SWR for caching
- Type API responses with TypeScript

View File

@@ -0,0 +1,29 @@
---
# nuzlocke-tracker-8tuw
title: Run Dashboard/Overview
status: todo
type: task
created_at: 2026-02-04T15:44:38Z
updated_at: 2026-02-04T15:44:38Z
parent: nuzlocke-tracker-f5ob
---
Create the main dashboard showing the current state of the Nuzlocke run.
## Checklist
- [ ] Display current team (up to 6 alive Pokémon)
- [ ] Show run statistics:
- [ ] Total encounters (caught/failed/skipped)
- [ ] Total deaths
- [ ] Routes completed
- [ ] Quick navigation to:
- [ ] Route list / encounter tracking
- [ ] Box (stored Pokémon)
- [ ] Graveyard (fallen Pokémon)
- [ ] Show active rules as badges/icons
- [ ] Display game name and run start date
## UX Considerations
- This is the home screen users return to most
- Keep it clean and informative at a glance
- Easy access to add new encounters

View File

@@ -0,0 +1,40 @@
---
# nuzlocke-tracker-bkhs
title: API Endpoints Implementation
status: todo
type: task
priority: normal
created_at: 2026-02-04T15:46:59Z
updated_at: 2026-02-04T15:47:23Z
parent: nuzlocke-tracker-f5ob
blocking:
- nuzlocke-tracker-8fcj
- nuzlocke-tracker-hy41
---
Implement the REST/GraphQL API endpoints for the tracker.
## Checklist
- [ ] Reference Data endpoints (read-only for tracker):
- [ ] GET /api/games - List all games
- [ ] GET /api/games/:id - Get game details with routes
- [ ] GET /api/games/:id/routes - List routes for a game
- [ ] GET /api/routes/:id/pokemon - List available Pokémon for a route
- [ ] GET /api/pokemon/:id - Get Pokémon details
- [ ] Run Management endpoints:
- [ ] POST /api/runs - Create new run
- [ ] GET /api/runs - List all runs
- [ ] GET /api/runs/:id - Get run details with encounters
- [ ] PATCH /api/runs/:id - Update run (settings, status)
- [ ] DELETE /api/runs/:id - Delete a run
- [ ] Encounter endpoints:
- [ ] POST /api/runs/:id/encounters - Log new encounter
- [ ] PATCH /api/encounters/:id - Update encounter (status, nickname)
- [ ] DELETE /api/encounters/:id - Remove encounter
- [ ] Add request validation
- [ ] Add proper error responses
## Notes
- Follow REST conventions
- Return appropriate HTTP status codes
- Include pagination for list endpoints if needed

View File

@@ -0,0 +1,30 @@
---
# nuzlocke-tracker-dgax
title: Nuzlocke Rules Configuration
status: completed
type: task
priority: normal
created_at: 2026-02-04T15:44:22Z
updated_at: 2026-02-04T15:58:43Z
parent: nuzlocke-tracker-f5ob
---
Create the rules/difficulty settings screen for customizing the Nuzlocke run.
## Checklist
- [x] Create rules configuration component
- [x] Implement core Nuzlocke rules toggles:
- [x] Standard rules (catch first encounter only, permadeath)
- [x] Nickname requirement toggle
- [x] Duplicates clause (can skip already-caught species)
- [x] Shiny clause (can catch shinies regardless)
- [x] Add optional difficulty modifiers:
- [x] Hardcore mode (no items in battle)
- [x] Level caps (can't overlevel gym leaders)
- [x] Set mode only (no switch after KO)
- [x] Persist selected rules to run state (local state; backend API TBD)
- [x] Show rule explanations/tooltips
## Notes
- Rules should be toggleable after run starts (user preference)
- Default to standard Nuzlocke rules

View File

@@ -0,0 +1,39 @@
---
# nuzlocke-tracker-f0fm
title: Romhack Integration
status: draft
type: epic
created_at: 2026-02-04T15:48:34Z
updated_at: 2026-02-04T15:48:34Z
---
Support for tracking Nuzlocke runs in popular Pokémon romhacks, which often feature custom routes, modified Pokémon, new regional forms, and altered encounter tables.
## Goals
- Allow users to track Nuzlocke runs in popular romhacks
- Support custom game definitions with modified data
- Enable community contributions of romhack data
## Potential Features (to be planned)
- Custom game creation via admin panel
- Import/export game definitions (JSON format)
- Support for romhack-specific mechanics:
- Custom regional forms / Fakemon
- Modified type charts
- New areas and routes
- Changed encounter tables
- Level cap modifications
- Community sharing of romhack definitions
- Popular romhack presets:
- Pokémon Radical Red
- Pokémon Emerald Kaizo
- Pokémon Unbound
- Pokémon Inclement Emerald
- Pokémon Renegade Platinum
## Dependencies
- Requires MVP to be complete first
- Admin panel must support flexible game creation
## Notes
This is a long-term goal. Tasks will be defined after MVP is complete and we better understand the data requirements for romhack support.

View File

@@ -0,0 +1,35 @@
---
# nuzlocke-tracker-f5ob
title: MVP - Core Nuzlocke Tracker
status: in-progress
type: epic
priority: normal
created_at: 2026-02-04T15:43:34Z
updated_at: 2026-02-04T15:48:38Z
blocking:
- nuzlocke-tracker-f0fm
---
The minimum viable product for the Nuzlocke Tracker application. This epic covers the essential features needed for a user to track a basic Nuzlocke run.
## Architecture
- **Frontend**: Web application for users to track their runs
- **Backend API**: RESTful or GraphQL API for data persistence
- **Database**: Persistent storage for game data, user runs, and encounters
- **Admin Panel**: Interface for managing reference data (games, routes, Pokémon)
## Goals
- Allow users to select a Pokémon game to play
- Support optional difficulty/rule settings
- Track encounters per route/area
- Track Pokémon status (alive, dead, boxed)
- Provide a clear overview of the current run
- Admin can manage game/route/Pokémon reference data
## Out of Scope for MVP
- User authentication (single user assumed)
- Multiple simultaneous runs
- Cloud sync across devices
- Team builder/planner
- Detailed statistics and analytics
- Social features

View File

@@ -0,0 +1,30 @@
---
# nuzlocke-tracker-hm6t
title: Pokemon Status Management
status: todo
type: task
created_at: 2026-02-04T15:44:37Z
updated_at: 2026-02-04T15:44:37Z
parent: nuzlocke-tracker-f5ob
---
Implement the system for tracking Pokémon status (alive, dead, boxed).
## Checklist
- [ ] Create Pokémon card/tile component showing:
- [ ] Sprite, name, nickname
- [ ] Current status with visual indicator
- [ ] Location caught
- [ ] Implement status transitions:
- [ ] Alive → Dead (fainted in battle)
- [ ] Alive → Boxed (stored in PC)
- [ ] Boxed → Alive (added to party)
- [ ] Add death recording:
- [ ] Optional: record cause of death (trainer, wild, gym leader)
- [ ] Optional: record level at death
- [ ] Create "Graveyard" view for fallen Pokémon
- [ ] Create "Box" view for stored Pokémon
## Notes
- Status changes should be confirmable (prevent accidental deaths)
- Consider undo functionality for misclicks

View File

@@ -0,0 +1,42 @@
---
# nuzlocke-tracker-hy41
title: Admin Panel
status: todo
type: task
created_at: 2026-02-04T15:47:05Z
updated_at: 2026-02-04T15:47:05Z
parent: nuzlocke-tracker-f5ob
---
Build an admin interface for managing reference data.
## Checklist
- [ ] Create admin routes/pages separate from tracker
- [ ] Game Management:
- [ ] List all games
- [ ] Add new game
- [ ] Edit game details
- [ ] Delete game (with cascade warning)
- [ ] Route Management:
- [ ] List routes for a game
- [ ] Add new route
- [ ] Edit route details (name, order)
- [ ] Delete route
- [ ] Reorder routes via drag-and-drop
- [ ] Route Pokémon Assignment:
- [ ] View Pokémon available on a route
- [ ] Add Pokémon to route
- [ ] Remove Pokémon from route
- [ ] Set encounter rates/methods
- [ ] Pokémon Management:
- [ ] List all Pokémon
- [ ] Add new Pokémon
- [ ] Edit Pokémon details
- [ ] Bulk import from CSV/JSON
- [ ] Admin API endpoints:
- [ ] POST/PUT/DELETE for games, routes, pokemon, route_pokemon
## Notes
- Can be a simple CRUD interface
- Consider using a UI library for tables/forms
- No auth required for MVP (assume local/trusted use)

View File

@@ -0,0 +1,31 @@
---
# nuzlocke-tracker-k5lm
title: Initial Game Data Seeding
status: todo
type: task
priority: normal
created_at: 2026-02-04T15:44:12Z
updated_at: 2026-02-04T15:47:29Z
parent: nuzlocke-tracker-f5ob
---
Create seed data for the database with initial games, routes, and Pokémon.
## Checklist
- [ ] Research and compile data for MVP games:
- [ ] Pokémon FireRed/LeafGreen (Gen 3 Kanto remakes - popular for Nuzlockes)
- [ ] Pokémon Emerald (Gen 3 Hoenn)
- [ ] Pokémon HeartGold/SoulSilver (Gen 4 Johto remakes)
- [ ] For each game, gather:
- [ ] All routes/areas in progression order
- [ ] Available wild Pokémon per route
- [ ] Encounter methods (grass, surf, fish, etc.)
- [ ] Create seed scripts/migrations to populate database
- [ ] Include Pokémon base data (national dex, names, types, sprite URLs)
- [ ] Document data sources for attribution
## Notes
- Use PokeAPI or Bulbapedia as data sources
- Admin panel allows adding more games later
- Focus on accuracy for the 3 MVP games
- Sprite URLs can point to existing sprite repositories

View File

@@ -0,0 +1,35 @@
---
# nuzlocke-tracker-l7e3
title: Database Schema Design
status: todo
type: task
priority: normal
created_at: 2026-02-04T15:46:54Z
updated_at: 2026-02-04T15:47:23Z
parent: nuzlocke-tracker-f5ob
blocking:
- nuzlocke-tracker-bkhs
- nuzlocke-tracker-k5lm
- nuzlocke-tracker-hy41
---
Design and implement the database schema for persistent storage.
## Checklist
- [ ] Choose database (PostgreSQL, SQLite, MongoDB, etc.)
- [ ] Set up database connection and ORM/query builder
- [ ] Design and create tables/collections:
- [ ] Games (id, name, generation, region)
- [ ] Routes (id, name, game_id, order, encounter_method)
- [ ] Pokemon (national_dex, name, types, sprite_url)
- [ ] RouteEncounters (route_id, pokemon_id, encounter_rate)
- [ ] NuzlockeRuns (id, game_id, settings, started_at, status)
- [ ] Encounters (id, run_id, route_id, pokemon_id, nickname, status, caught_at)
- [ ] Set up migrations system
- [ ] Add seed data for initial games/routes/Pokémon
- [ ] Create indexes for common queries
## Notes
- Consider SQLite for simplicity in MVP, can migrate later
- Use foreign keys for referential integrity
- Status fields should be enums

View File

@@ -0,0 +1,14 @@
---
# nuzlocke-tracker-p940
title: gitignore-setup
status: completed
type: task
priority: high
created_at: 2026-02-04T15:58:22Z
updated_at: 2026-02-04T16:01:15Z
parent: nuzlocke-tracker-f5ob
---
Create an overarching gitignore, taking into account that there are gitignore files in the individual component folders.
- [x] Git should ignore anything that could leak credentials
- [x] Git should ignore anything specific to my local environment

View File

@@ -0,0 +1,29 @@
---
# nuzlocke-tracker-sm1b
title: Game Data Models & Types
status: todo
type: task
priority: normal
created_at: 2026-02-04T15:44:08Z
updated_at: 2026-02-04T15:45:00Z
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
- [ ] Define Game type (id, name, generation, region, routes)
- [ ] Define Route/Area type (id, name, available Pokémon, game)
- [ ] Define Pokemon type (national dex number, name, types, sprite URL)
- [ ] Define Encounter type (route, pokemon, nickname, status, caught date)
- [ ] Define NuzlockeRun type (game, settings, encounters, start date)
- [ ] Define RuleSettings type (hardcore mode, level caps, duplicates clause, etc.)
## Notes
- Keep types flexible for future expansion
- Consider using discriminated unions for status types

View File

@@ -0,0 +1,24 @@
---
# nuzlocke-tracker-uw2j
title: Game Selection Screen
status: todo
type: task
created_at: 2026-02-04T15:44:16Z
updated_at: 2026-02-04T15:44:16Z
parent: nuzlocke-tracker-f5ob
---
Build the initial screen where users select which Pokémon game they want to track.
## Checklist
- [ ] Create game selection component
- [ ] Display games grouped by generation
- [ ] Show game artwork/logo for each option
- [ ] Add search/filter functionality for games
- [ ] Navigate to rule settings after selection
- [ ] Allow returning to change game selection
## UX Considerations
- Games should be visually recognizable
- Consider showing regional variants (e.g., Kanto games together)
- Mobile-friendly grid/list layout