BACKEND = cd backend && uv run .PHONY: setup test backend frontend fetch-static crawl extract artifact calibrate refresh autoplay setup: cd backend && uv sync cd frontend && npm install test: $(BACKEND) pytest -q backend: $(BACKEND) uvicorn tft.api.app:app --reload --port 8123 frontend: cd frontend && npm run dev fetch-static: $(BACKEND) python -m tft.cli fetch-static crawl: $(BACKEND) python -m tft.cli crawl extract: $(BACKEND) python -m tft.cli extract artifact: $(BACKEND) python -m tft.cli build-artifact calibrate: $(BACKEND) python -m tft.cli calibrate refresh: $(BACKEND) python -m tft.cli refresh autoplay: $(BACKEND) python -m tft.cli autoplay