# ============================================ # BILLIT - Makefile # ============================================ .PHONY: all build run dev clean scss scss-watch test docker-build docker-run # Variables APP_NAME := billit MAIN_PATH := ./cmd/api SCSS_DIR := internal/web/assets/scss CSS_DIR := internal/web/assets/css # Default target all: scss build # Build the application build: @echo "Building $(APP_NAME)..." go build -o bin/$(APP_NAME) $(MAIN_PATH) # Run the application run: scss @echo "Running $(APP_NAME)..." go run $(MAIN_PATH) # Development mode with hot reload dev: @echo "Starting development server..." air # Compile SCSS to CSS scss: @echo "Compiling SCSS..." sass $(SCSS_DIR)/main.scss $(CSS_DIR)/output.css --style=compressed # Watch SCSS for changes scss-watch: @echo "Watching SCSS for changes..." sass $(SCSS_DIR)/main.scss $(CSS_DIR)/output.css --style=compressed --watch # Clean build artifacts clean: @echo "Cleaning..." rm -rf bin/ rm -f $(CSS_DIR)/output.css rm -f $(CSS_DIR)/output.css.map # Run tests test: @echo "Running tests..." go test ./... # Docker build docker-build: scss @echo "Building Docker image..." docker compose -f compose.build.yml build # Docker run docker-run: @echo "Running Docker container..." docker compose up # Build for production release: scss @echo "Building for production..." CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w" -o bin/$(APP_NAME) $(MAIN_PATH)