# nuzlocke-tracker A full-stack Nuzlocke run tracker for Pokemon games. ## Getting Started ### Prerequisites - Docker & Docker Compose ### Start the Stack ```bash docker compose up ``` This starts three services: | Service | URL | |------------|--------------------------| | Frontend | http://localhost:5173 | | API | http://localhost:8000 | | API Docs | http://localhost:8000/docs| | PostgreSQL | localhost:5432 | ### Run Migrations ```bash docker compose exec api alembic -c /app/alembic.ini upgrade head ``` ### Seed the Database The seeder reads from pre-generated JSON files in `backend/src/app/seeds/data/` (committed to the repo) and loads them into PostgreSQL. No external API access is needed — everything runs from local files inside the container. ```bash docker compose exec api python -m app.seeds ``` To seed and verify the data was loaded correctly: ```bash docker compose exec api python -m app.seeds --verify ``` This loads game data, Pokemon, routes, and encounter tables for FireRed, LeafGreen, Emerald, HeartGold, and SoulSilver. ### Regenerating Seed Data The seed JSON files don't normally need regenerating. If you need to update them (e.g., to pull in new PokeAPI data), run the Go fetch tool against a local PokeAPI instance: 1. Start a local PokeAPI (e.g., using [pokeapi/pokeapi](https://github.com/PokeAPI/pokeapi)): ```bash # In a separate directory git clone https://github.com/PokeAPI/pokeapi.git && cd pokeapi docker compose up ``` This serves the API at `http://localhost:8000/api/v2` by default. 2. Run the fetch tool (requires Go 1.22+): ```bash cd tools/fetch-pokeapi && go run . ``` Set `POKEAPI_URL` if your instance is at a different address: ```bash POKEAPI_URL=http://localhost:9000/api/v2 go run . ``` Use `--clear-cache` to discard cached API responses and re-fetch everything. 3. Review and commit the updated JSON files in `backend/src/app/seeds/data/`.