Add three new bulk import endpoints that accept the same JSON format as
their corresponding export endpoints, enabling round-trip compatibility:
- POST /evolutions/bulk-import (upsert by from/to pokemon pair)
- POST /games/{id}/routes/bulk-import (reuses seed loader for hierarchy)
- POST /games/{id}/bosses/bulk-import (reuses seed loader with team data)
Generalize BulkImportModal to support all entity types with configurable
title, example, and result labels. Wire up Bulk Import buttons on
AdminEvolutions, and AdminGameDetail routes/bosses tabs.
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