# Default recipe
default:
    @just --list

# Check compilation without building
check:
    @cargo check

# Build the project
build:
    @cargo build --release

# Run the server locally (requires .env)
run:
    @cargo run

# Run with hot reload using cargo-watch
dev:
    @cargo watch -x run

# Run tests
test:
    @cargo test

# Clean build artifacts
clean:
    @cargo clean

# Format code
fmt:
    @cargo fmt

# Lint code
lint:
    @cargo clippy -- -D warnings

# Run tests with coverage
coverage:
    @cargo llvm-cov --open

# Build Docker image
docker-build:
    @docker compose build

# Run with Docker
docker-run:
    @docker compose up

# Run with Docker in background
docker-up:
    @docker compose up -d

# Stop Docker containers
docker-down:
    @docker compose down

# Stop and remove Docker containers, images, and volumes
docker-clean:
    @docker compose down --rmi local --volumes
