# pansy — one static binary: Go API + embedded React build. # # make build # production binary ./pansy with the web build embedded # make dev # Go API (:8080) + Vite dev (:5173) together, hot reload # make test # go test + web tests # # pansy is a standalone module; GOWORK=off keeps the parent workspace out of the # way, and CGO_ENABLED=0 keeps the binary static (pure-Go SQLite driver). BINARY := pansy WEBDIST := internal/webdist/dist GO_ENV := CGO_ENABLED=0 GOWORK=off .PHONY: all build web dev dev-api dev-web test clean all: build ## build: bundle the frontend and compile the single static binary. build: web $(GO_ENV) go build -o $(BINARY) ./cmd/pansy @echo "built ./$(BINARY)" ## web: produce the production web bundle and sync it into the embed directory. web: cd web && npm ci && npm run build rm -rf $(WEBDIST) cp -r web/dist $(WEBDIST) ## dev: run the API and Vite dev server together (Ctrl-C stops both). ## Prefer two terminals if you want independent restarts: ## term 1: make dev-api term 2: make dev-web dev: @echo "API on :8080, Vite on :5173 (proxies /api → :8080). Ctrl-C stops both." @$(MAKE) -j2 dev-api dev-web dev-api: $(GO_ENV) go run ./cmd/pansy dev-web: cd web && npm run dev ## test: run backend and (if present) frontend tests. test: $(GO_ENV) go test ./... cd web && npm test --if-present ## clean: remove the binary and the generated embed contents (restore placeholder). clean: rm -f $(BINARY) rm -rf $(WEBDIST) git checkout -- $(WEBDIST)/index.html 2>/dev/null || true