Development
Pipedash dev environment setup with mise, running the app, every mise task and the cargo features.
A working toolchain takes mise, a clone of the repository and two commands. This page lists the tools, the tasks and the cargo features of the Pipedash repository.
Environment setup
The repository uses mise for tools and tasks. mise.toml pins these tools:
| Tool | Version |
|---|---|
| Rust | nightly, with the components rust-src, llvm-tools, clippy, rustfmt and rustc-dev |
| Node | 24 |
| Bun | latest |
The file also sets RUST_LOG=debug. These commands install the tools, then the frontend dependencies:
mise install
mise run installThe desktop app needs the system libraries that Tauri lists in its prerequisites.
Running the app
mise run devdev starts the backend with cargo watch and the Vite frontend side by side. mise run dev:tauri starts the native app.
Mise tasks
| Task | What it does |
|---|---|
dev | Backend with cargo-watch and the Vite frontend |
dev:front, dev:back | Frontend only, backend only |
dev:tauri | Desktop app |
dev:ios, dev:android | Mobile development |
build | Release build of pipedash-web after build:front |
build:front | Frontend assets |
build:tauri | Desktop bundles |
build:ios, build:android | Mobile builds |
build:analyze | Frontend build with bundle analysis |
check, check:front, check:back | TypeScript type check and cargo check --workspace --all-targets --all-features |
lint, lint:front, lint:back | ESLint and Clippy with warnings denied |
fix, fix:front, fix:back | eslint --fix and cargo clippy --fix --allow-dirty |
fmt, fmt:front, fmt:back | eslint --fix and cargo +nightly fmt --all |
fmt:check, fmt:front:check, fmt:back:check | ESLint and cargo +nightly fmt --all -- --check |
ci | fmt:check, lint and check |
precommit | fmt, lint and check in sequence |
release | ci and build |
bump:patch, bump:minor, bump:major | Version bump, then cargo update --workspace |
install | Installs frontend dependencies |
install:ios, install:android | Initializes the mobile targets |
examples:sqlite:up, examples:sqlite:down | Builds and starts the SQLite Docker example, or stops it and deletes its volumes |
examples:postgres:up, examples:postgres:down | The same for the PostgreSQL example |
clean | cargo clean and removal of dist and the Vite cache |
knip | Finds unused code |
icons | Generates app icons |
deps, deps:minor | Updates dependencies, major or minor |
Cargo features
| Feature | Crates | Effect |
|---|---|---|
postgres | pipedash-core, pipedash-desktop, pipedash-web | Compiles PostgreSQL support. It is in the default features of all 3 crates |
full | pipedash-core, pipedash-web | Enables postgres |
devtools | pipedash-desktop | Enables tauri/devtools |
custom-protocol | pipedash-desktop | Enables tauri/custom-protocol |
A PostgreSQL storage backend needs the postgres feature at build time. The storage backends page covers the runtime choice.
Next step
The architecture page shows where a change belongs, and the contributing page covers the templates and checks.