version: '3' dotenv: [".env", ".env.example"] vars: VERSION: '{{.v | default "latest"}}' RUST_LOG: "warn,siren=info" tasks: default: desc: "List available tasks" cmds: - task --list silent: true setup: desc: "Copy .env.example to .env if .env does not exist" cmds: - test -f .env || cp .env.example .env silent: true format: desc: "Format code" cmds: - task: format:app - task: format:ui silent: true lint: desc: "Run linters" cmds: - task: lint:app - task: lint:ui silent: true # ----------------------------------------------------------- # Cargo # ----------------------------------------------------------- build: desc: "Compile a debug build" deps: [ setup ] cmds: - cargo build silent: true release: desc: "Compile an optimised release build" deps: [ setup ] cmds: - cargo build --release silent: true run: desc: "Run the project" deps: [ setup ] env: RUST_LOG: "warn,siren=trace" cmds: - cargo run silent: true format:app: desc: "Format code" cmds: - cargo fmt silent: true clean: desc: "Clean the project" deps: [ setup ] cmds: - cargo clean silent: true lint:app: desc: "Run Clippy linter" deps: [ setup ] cmds: - cargo clippy -- -D warnings silent: true check: desc: "Fast type-check without producing a binary" deps: [ setup ] cmds: - cargo check silent: true # ----------------------------------------------------------- # Docker # ----------------------------------------------------------- docker:build: desc: "Build the Docker image (use v=x.x.x to set version, default is \"latest\")" cmds: - docker build -f Dockerfile -t siren:{{.VERSION}} . silent: true docker:up: desc: "Start backend containers" cmds: - docker compose up -d silent: true docker:up:all: desc: "Start all containers" cmds: - docker compose --profile app up -d silent: true docker:down: desc: "Stop all containers" cmds: - docker compose --profile app down silent: true docker:clean: desc: "Stop all containers and remove volumes" prompt: "This will remove all docker containers, networks, volumes, and images. Are you sure?" cmds: - docker compose --profile app down -v silent: true docker:refresh: desc: "Clean and restart containers" cmds: - task: docker:clean - task: docker:up silent: true # ----------------------------------------------------------- # UI # ----------------------------------------------------------- install:ui: desc: "Install UI npm dependencies" dir: ui cmds: - npm install silent: true run:ui: desc: "Run Vite dev server" dir: ui cmds: - npm run dev silent: true build:ui: desc: "Build the React UI into ui/dist" dir: ui cmds: - npm run build silent: true format:ui: desc: "Format UI code with prettier" dir: ui cmds: - npm run format silent: true lint:ui: desc: "Lint UI code with eslint" dir: ui cmds: - npm run lint silent: true # ----------------------------------------------------------- # Utilities # ----------------------------------------------------------- psql: desc: Connect to the database cmds: - docker exec -it siren-postgres psql -U $DATABASE_USER -P pager=off silent: true ngrok: desc: Start ngrok tunnel vars: UI_PORT: '{{.UI_PORT | default "5173"}}' cmds: - ngrok http {{.UI_PORT}} silent: true