Add a `condition` column to RouteEncounter so encounters can store per-condition rates (time of day, season, weather) instead of flattening to max(). Update the seed loader, API schemas, and frontend to support the new `conditions` dict format in seed JSON. Port the PoC branch's condition-aware EncounterModal UI with filter tabs that let players see encounter rates for specific conditions. Add horde/SOS as distinct encounter methods with their own badges. Update the import tool to extract per-condition rates instead of flattening, and add a merge script (tools/merge-conditions.py) that enriches existing curated seed files with condition data from PokeDB. Seed data updated for 22 games (5,684 encounters): - Gen 2: Gold, Silver, Crystal (morning/day/night) - Gen 4: HG, SS, Diamond, Pearl, Platinum, BD, SP (morning/day/night) - Gen 5: Black, White, Black 2, White 2 (spring/summer/autumn/winter) - Gen 7: Sun, Moon, Ultra Sun, Ultra Moon (day/night) - Gen 8: Sword, Shield (weather) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Nuzlocke Tracker API
Backend API for the Nuzlocke Tracker application, built with FastAPI.
Development Setup
Option 1: Docker (Recommended)
From the project root:
docker compose up
This starts the API, frontend, and PostgreSQL database with hot reload enabled.
Option 2: Local Setup
-
Create and activate virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
Install dependencies:
pip install -e ".[dev]" -
Copy environment file:
cp .env.example .env -
Run the development server:
uvicorn app.main:app --reload --app-dir src
The API will be available at http://localhost:8000
API Documentation
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Project Structure
backend/
├── src/
│ └── app/
│ ├── api/ # API routes
│ ├── core/ # Core configuration
│ ├── models/ # Database models
│ ├── schemas/ # Pydantic schemas
│ └── services/ # Business logic
├── tests/ # Test files
├── pyproject.toml # Project configuration
└── .env.example # Example environment variables
Linting & Formatting
ruff check . # Check for issues
ruff check . --fix # Fix auto-fixable issues
ruff format . # Format code