Getting Started
Spool is a Tauri 2 desktop app: a Rust backend
(tauri/src-tauri/) paired with a SvelteKit 5 frontend (tauri/src/).
Windows and Linux are both primary targets (notably the gaming-handheld
distros — Bazzite, CachyOS, SteamOS).
Prerequisites
Section titled “Prerequisites”- Rust (stable toolchain)
- Bun for the frontend
- Tauri’s platform prerequisites — see the Tauri prerequisites guide
- Linux only: the WebView + tray system libraries —
libwebkit2gtk-4.1-dev,libappindicator3-dev, andlibrsvg2-dev(addpatchelfif you build an AppImage).umu-launcher(umu-run) on the host is optional — only needed to test the Proton runner, and is the one Linux dependency that is not bundled.
Bundled sidecars
Section titled “Bundled sidecars”Spool shells out to ludusavi and
rclone, which ship as Tauri sidecars — end users
never install them separately. For development you fetch them once into
tauri/src-tauri/binaries/:
cd tauribun run download-sidecarsYou need these before anything that compiles the backend — tauri dev,
tauri build, and the local checks — because Tauri
verifies the sidecar binaries exist at build time.
Install & run
Section titled “Install & run”All commands run from tauri/ unless noted.
cd tauri
# Install frontend dependencies (first time, or after package.json changes)bun install
# Fetch the bundled sidecars (first time — see "Bundled sidecars" above)bun run download-sidecars
# Run the app in development (hot-reload frontend + auto-rebuild backend)bun tauri devBuild a release binary
Section titled “Build a release binary”cd tauribun tauri build# Output:# tauri/src-tauri/target/release/bundle/nsis/Spool_<version>_x64-setup.exeOn Linux the release build produces an AppImage (Spool_*_amd64.AppImage).
Run the checks locally
Section titled “Run the checks locally”CI fails on any clippy warning, so run these before pushing.
# Backend (from tauri/src-tauri)cargo checkcargo clippy --all-targets -- -D warningscargo test
# Frontend (from tauri/)bun run check # svelte-checkbun run lint # ESLintbun run test # Vitest unit testsEnd-to-end tests drive a real Tauri window via tauri-driver + WebdriverIO:
cd tauribun run test:e2e # builds the app then runs the WebDriver suite# Headless Linux: xvfb-run -a bun run e2eWhere things live
Section titled “Where things live”| Path | What it is |
|---|---|
tauri/src-tauri/src/ | Rust backend (persistence, subprocess orchestration, OS integration) |
tauri/src/ | SvelteKit frontend (routes + lib/) |
server/ | Self-hostable Hono sync server |
decky/ | Companion Decky Loader plugin |
docs-site/ | This documentation site |
See Architecture → Overview for the full module map.