Development Setup
Prerequisites
- Rust (stable, 2024 edition) — via mise or rustup
- Node.js 22+ and pnpm — for the Vue frontend
- Tauri CLI:
cargo install tauri-cli - just: task runner —
cargo install just
On Ubuntu (for CI/cross-compile), also install:
sh
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-devGetting Started
sh
git clone git@github.com:nightwatch-astro/astro-up.git
cd astro-up
just setup # Install frontend deps, verify toolchain
just dev # Start Tauri dev server (Vite + hot-reload)
just test # Rust + Vue tests
just check # All quality checks (matches CI)Project Structure
crates/
astro-up-core/ # Shared library — types, detection, download, install
astro-up-cli/ # CLI binary (clap + ratatui)
astro-up-gui/ # Tauri desktop app
frontend/ # Vue 3 + PrimeVue + VueQuery
docs/ # This documentation site (VitePress)
specs/ # Speckit feature specificationsDevelopment Workflow
Branching
- Feature branches off
main, merged with--no-ff - Branch naming:
feat/*,fix/*,refactor/*,docs/*,chore/*
Conventional Commits
feat(engine): add dependency resolution
fix(detect): handle missing registry key
docs(spec): update spec 006 requirements
refactor(config): simplify path resolutionTesting
- Integration tests over mocks
instafor snapshot testingcargo clippy -- -D warnings— zero warnings policy- ESLint +
vue-tscfor frontend
Pre-commit Hooks
Never skip hooks (--no-verify is banned). If a hook fails, fix the issue.
Build Commands
sh
just setup # Install deps, verify toolchain
just dev # Tauri dev server with hot-reload
just build # Production Tauri build
just test # Rust + Vue tests
just check # All quality checks
just fmt # Auto-format Rust
just lint # Clippy + ESLint