SHELL := /bin/bash TAILWIND_VERSION ?= v4.1.14 HTMX_VERSION ?= 2.0.4 TOOLS_DIR := tools TAILWIND := $(TOOLS_DIR)/tailwindcss DAISYUI := $(TOOLS_DIR)/daisyui.mjs HTMX := web/static/htmx.min.js APP_CSS := web/static/app.css INPUT_CSS := web/styles/input.css UNAME_M := $(shell uname -m) ifeq ($(UNAME_M),x86_64) TW_ARCH := x64 else TW_ARCH := arm64 endif TAILWIND_URL := https://github.com/tailwindlabs/tailwindcss/releases/download/$(TAILWIND_VERSION)/tailwindcss-linux-$(TW_ARCH) DAISYUI_URL := https://github.com/saadeghi/daisyui/releases/latest/download/daisyui.mjs HTMX_URL := https://unpkg.com/htmx.org@$(HTMX_VERSION)/dist/htmx.min.js .DEFAULT_GOAL := help .PHONY: help help: ## List available targets @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-14s\033[0m %s\n", $$1, $$2}' .PHONY: setup setup: $(TAILWIND) $(DAISYUI) $(HTMX) deps ## Download tools (Tailwind, DaisyUI, htmx) and resolve deps @test -f .env || cp .env.example .env @echo "setup complete. edit .env as needed." $(TAILWIND): @mkdir -p $(TOOLS_DIR) curl -sL -o $(TAILWIND) $(TAILWIND_URL) chmod +x $(TAILWIND) $(DAISYUI): @mkdir -p $(TOOLS_DIR) curl -sL -o $(DAISYUI) $(DAISYUI_URL) $(HTMX): @mkdir -p web/static curl -sL -o $(HTMX) $(HTMX_URL) .PHONY: deps deps: ## Resolve Go dependencies (go mod tidy) go mod tidy .PHONY: css css: $(TAILWIND) $(DAISYUI) ## Generate web/static/app.css (minified) $(TAILWIND) -i $(INPUT_CSS) -o $(APP_CSS) --minify .PHONY: css-watch css-watch: $(TAILWIND) $(DAISYUI) ## Rebuild CSS automatically on save $(TAILWIND) -i $(INPUT_CSS) -o $(APP_CSS) --watch .PHONY: assets assets: css $(HTMX) ## Ensure generated/fetched assets exist (app.css + htmx) .PHONY: run run: assets ## Run in dev mode (hot-reload of templates/static via dev build tag) go run -tags dev ./cmd/server .PHONY: run-prod run-prod: assets ## Run in production mode (embedded assets) go run ./cmd/server .PHONY: build build: assets ## Build the production binary at bin/server (embedded assets) go build -o bin/server ./cmd/server .PHONY: test test: ## Run tests go test ./... .PHONY: lint lint: ## Run go vet go vet ./... .PHONY: clean clean: ## Remove generated artifacts (bin, app.css) rm -rf bin $(APP_CSS)