BACKEND = cd backend && uv run .PHONY: install dev test build fetch-static crawl extract artifact calibrate refresh autoplay install: cd backend && uv sync cd frontend && npm install dev: $(BACKEND) uvicorn tft.api.app:app --reload --port 8123 & cd frontend && npm run dev test: $(BACKEND) pytest -x -q build: cd frontend && npm run build 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