version: "3" method: checksum vars: # Go binary GO_CMD: sh: command -v go >/dev/null 2>&1 && echo "go" # Go build flags GO_FLAGS: '-ldflags="-s -w"' # Server binary name SERVER_BINARY: server # Frontend binary name FRONTEND_BINARY: frontend # File extension EXT: '{{ if eq .OS "windows" }}.exe{{ end }}' # Tailwind binary TAILWIND_CMD: "tailwindcss" tasks: # Development tasks dev: desc: Start development server with hot reload cmds: - task --parallel tailwind templ run: env: STRAPI_TOKEN: 918aad014c203e302ee185628a0591b1bc875bd999cb9cd7b9c81fac68f275cda75ea806c7ea7b352253a680838887b65a09a9904c6a140bfb3b794d19083c2659d5ad210bca8044436d67b3f6db4d7262168f66b5748b367e8d3239167c185f3b0f0932f8e10800bfb6ad0355ec7d5ca1edbe0d06814bee0a92ab7ebcef3022 desc: Build and run go server binary deps: [build, build-css] cmds: - "./dist/{{ .SERVER_BINARY }}{{ .EXT }}" # Build tasks build: desc: Build go server binary deps: [dist] sources: - "**/*.go" - "go.mod" - "go.sum" generates: - dist/server cmds: - "{{ .GO_CMD }} build {{ .GO_FLAGS }} -o dist/{{ .SERVER_BINARY }}{{ .EXT }} cmd/main.go" build-queries: desc: Builds GraphQL queries cmds: - "{{ .GO_CMD }} run github.com/Khan/genqlient" build-css: desc: Build CSS once sources: - web/static/css/input.css - tailwind.config.js generates: - web/static/css/style.css cmds: - "{{ .TAILWIND_CMD }} -i ./web/static/css/input.css -o ./web/static/css/style.css" build-all: desc: Build everything (Go binary + CSS) deps: [build, build-css, build-queries] # Watch tasks templ: desc: Run templ with integrated server and hot reload cmds: - 'templ generate --watch --proxy="http://localhost:8080" --cmd="go run ./cmd/web/main.go" --open-browser=false' tailwind: desc: Watch TailwindCSS changes cmds: - "{{ .TAILWIND_CMD }} -i ./web/static/css/input.css -o ./web/static/css/style.css --watch" # Utility tasks deps: desc: Install dependencies cmds: - "{{ .GO_CMD }} mod download" clean: desc: Clean build artifacts cmds: - rm -rf dist/ - rm -f web/static/css/style.css dist: internal: true silent: true status: - test -d dist/ cmds: - mkdir -p dist/ # Testing and linting test: desc: Run tests cmds: - "{{ .GO_CMD }} test ./..." fmt: desc: Format Go code cmds: - "{{ .GO_CMD }} fmt ./..." vet: desc: Run go vet cmds: - "{{ .GO_CMD }} vet ./..."