Phase 1 — Project Scaffold: - Vite + React-TS project in frontend/ with Tailwind v3, PostCSS, Autoprefixer - clsx and react-router-dom installed - Vite proxy configured for /api and /ws to localhost:8000 - Tailwind directives in src/index.css - Makefile targets: frontend-dev, frontend-build - app.py updated to serve frontend/dist/ with SPA catch-all fallback Phase 2 — Type Definitions: - TypeScript types in frontend/src/types/game.ts (Phase, Card, Player, GameState, WsIncoming, NarrationLine) - Constants in frontend/src/constants.ts (SEAT_COLOURS, PHASES) Phase 10 — Tailwind Colour Tokens: - Custom color tokens for bg, accent, life, seat, card color groups - Additional tokens from index.html audit: border, phase, btn, text, highlight - Custom pulse animation keyframe Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
72 lines
1.9 KiB
Makefile
72 lines
1.9 KiB
Makefile
# Commander AI Lab — Developer Makefile
|
|
# ======================================
|
|
# Targets:
|
|
# make test — run all tests
|
|
# make test-unit — run unit tests only (fast)
|
|
# make test-integration— run integration tests
|
|
# make test-benchmark — run benchmark suite with -s (print timings)
|
|
# make coverage — run tests with coverage report
|
|
# make serve — start the FastAPI dev server
|
|
# make lint — ruff + mypy
|
|
# make fmt — ruff format
|
|
# make clean — remove build artefacts
|
|
|
|
PYTHON ?= python
|
|
UVICORN ?= uvicorn
|
|
PORT ?= 8000
|
|
SRC = src/commander_ai_lab
|
|
|
|
.PHONY: test test-unit test-integration test-benchmark coverage serve lint fmt clean frontend-dev frontend-build
|
|
|
|
test:
|
|
$(PYTHON) -m pytest tests/ -q
|
|
|
|
test-unit:
|
|
$(PYTHON) -m pytest tests/ -q -m "not integration and not benchmark"
|
|
|
|
test-integration:
|
|
$(PYTHON) -m pytest tests/test_integration.py -v
|
|
|
|
test-benchmark:
|
|
$(PYTHON) -m pytest tests/test_benchmark.py -v -s
|
|
|
|
test-phase3:
|
|
$(PYTHON) -m pytest tests/test_phase3.py -v
|
|
|
|
test-phase4:
|
|
$(PYTHON) -m pytest tests/test_phase4.py -v
|
|
|
|
test-phase5:
|
|
$(PYTHON) -m pytest tests/test_phase5.py -v
|
|
|
|
test-phase6:
|
|
$(PYTHON) -m pytest tests/test_phase6.py -v
|
|
|
|
test-phase7:
|
|
$(PYTHON) -m pytest tests/test_integration.py tests/test_benchmark.py -v
|
|
|
|
coverage:
|
|
$(PYTHON) -m pytest tests/ --cov=$(SRC) --cov-report=term-missing --cov-report=html
|
|
echo "Coverage report: htmlcov/index.html"
|
|
|
|
serve:
|
|
$(UVICORN) commander_ai_lab.web.app:app --reload --port $(PORT)
|
|
|
|
lint:
|
|
$(PYTHON) -m ruff check $(SRC) tests/
|
|
$(PYTHON) -m mypy $(SRC) --ignore-missing-imports
|
|
|
|
fmt:
|
|
$(PYTHON) -m ruff format $(SRC) tests/
|
|
|
|
clean:
|
|
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name '*.pyc' -delete
|
|
rm -rf .coverage htmlcov .mypy_cache .ruff_cache dist build
|
|
|
|
frontend-dev:
|
|
cd frontend && npm run dev
|
|
|
|
frontend-build:
|
|
cd frontend && npm run build
|