.PHONY: run run-worker dev dev-infra-up dev-infra-down test test-integration lint migrate-up migrate-down migrate-create migrate-status docker-up docker-down docker-logs docker-logs-worker ifneq (,$(wildcard .env)) include .env export endif # Run for development run: go run ./cmd/server run-worker: go run ./cmd/worker # Start only infra (postgres, kafka) in Docker, run server + worker locally dev: dev-infra-up @trap 'kill 0' INT; \ go run ./cmd/server & \ go run ./cmd/worker & \ wait dev-infra-up: docker compose up -d postgres kafka kafka-init dev-infra-down: docker compose stop postgres kafka kafka-init # Tests test: go test ./... -v -race -count=1 # Integration tests (require Docker) test-integration: go test -tags=integration ./... -v -race -count=1 # Linter lint: golangci-lint run ./... # Migrations migrate-up: goose -dir migrations postgres "$(DATABASE_URL)" up migrate-down: goose -dir migrations postgres "$(DATABASE_URL)" down migrate-create: goose -dir migrations create $(name) sql migrate-status: goose -dir migrations postgres "$(DATABASE_URL)" status # Docker docker-up: docker compose up -d docker-down: docker compose down docker-logs: docker compose logs -f app docker-logs-worker: docker compose logs -f worker