set dotenv-load := false
set ignore-comments := true

default:
    @just --list

# Run the Axum API (reads config/ + APP_ENV).
server:
    APP_ENV=${APP_ENV:-development} cargo run -p server

# Vite dev server. Proxy target is read from config/*.toml.
web:
    cd apps/web && npm install && npm run dev

# Export OpenAPI from the Axum router and regenerate the typed Vue client.
generate-api:
    cargo run -p server --bin export-openapi
    node scripts/generate-api.mjs

# Postgres for local smoke tests.
db-up:
    docker compose -f infra/compose/docker-compose.yml up -d postgres

db-down:
    docker compose -f infra/compose/docker-compose.yml down

# Format + clippy + frontend typecheck.
check:
    cargo fmt --all -- --check
    cargo clippy -p server --all-targets -- -D warnings
    cargo test -p server
    cd apps/web && npm install && npm run typecheck
