.PHONY: dev build migrate test lint docker-up docker-down clean BINARY := bin/forgebucket GO_CMD := ./cmd/forgebucket FRONTEND_DIR := frontend # ─── Development ───────────────────────────────────────────────────────────── dev: @echo "Starting backend + frontend dev servers..." @trap 'kill %1 %2 2>/dev/null; exit' INT; \ go run $(GO_CMD) & \ cd $(FRONTEND_DIR) && pnpm dev & \ wait # ─── Production build ───────────────────────────────────────────────────────── build: build-frontend build-go build-frontend: @echo "Building frontend..." pnpm -C $(FRONTEND_DIR) build @rm -rf web/dist @cp -r $(FRONTEND_DIR)/dist web/dist build-go: @echo "Building Go binary..." @mkdir -p bin go build -ldflags="-s -w" -o $(BINARY) $(GO_CMD) # ─── Database ───────────────────────────────────────────────────────────────── migrate: @echo "Running database migrations..." go run ./cmd/migrate # ─── Docker ─────────────────────────────────────────────────────────────────── docker-up: docker compose up -d docker-down: docker compose down # ─── Quality ────────────────────────────────────────────────────────────────── test: go test ./... -race -count=1 pnpm -C $(FRONTEND_DIR) test --run lint: go vet ./... pnpm -C $(FRONTEND_DIR) lint # ─── Housekeeping ───────────────────────────────────────────────────────────── clean: rm -rf bin web/dist $(FRONTEND_DIR)/dist