# ─────────────────────────────────────────────────────────────
# Hermes Kanban Mini App — Makefile
# Common development and deployment commands
# ─────────────────────────────────────────────────────────────

.PHONY: dev dev-bridge dev-frontend build install typecheck test test-bridge clean up down logs

# ── Local development ───────────────────────────────────────

## Install all dependencies
install:
	pnpm install

## Run bridge + frontend in dev mode (parallel)
dev:
	@echo "Starting bridge (port 3456) and frontend (port 5173)..."
	@pnpm --filter @kanban/bridge dev & \
	 pnpm --filter frontend dev & \
	 wait

## Run bridge only in dev mode (watch)
dev-bridge:
	pnpm --filter @kanban/bridge dev

## Run frontend only in dev mode
dev-frontend:
	pnpm --filter frontend dev

# ── Build ───────────────────────────────────────────────────

## Build all TypeScript packages
build:
	pnpm -r build

## Build Docker images
docker-build:
	docker compose build

## Build + tag production images
docker-build-prod:
	docker compose -f docker-compose.yml build --no-cache

# ── Quality ─────────────────────────────────────────────────

## Run TypeScript type checking
typecheck:
	pnpm typecheck

## Run all tests
test: test-bridge

## Run bridge tests
test-bridge:
	pnpm --filter @kanban/bridge test

## Run frontend build (includes tsc)
test-frontend:
	pnpm --filter frontend build

## Run full CI pipeline locally
ci: install typecheck test build

# ── Docker Compose ──────────────────────────────────────────

## Start services with docker compose
up:
	docker compose up -d

## Stop services
down:
	docker compose down

## View service logs
logs:
	docker compose logs -f

## Rebuild and restart services
restart: down docker-build up

# ── Cleanup ─────────────────────────────────────────────────

## Remove build artifacts
clean:
	pnpm -r clean
	rm -rf frontend/dist

## Full clean (including node_modules)
clean-all: clean
	rm -rf node_modules packages/*/node_modules frontend/node_modules

## Remove Docker images
docker-clean:
	docker compose down --rmi local --volumes --remove-orphans
