StackDrop is a local-first Tauri v2 + React desktop document indexer. SQLite + FTS5 powers search and document metadata. No external services, no cloud APIs, no auth.
| Mode | Command | Notes |
|---|---|---|
| Web UI only | npm run dev:web |
Vite on 127.0.0.1:1420. Requires VITE_E2E_SQLITE=1 env to use sql.js-fts5 fallback for DB (otherwise shows "Loading database..." since Tauri native plugins aren't available). |
| Full desktop | npm run dev |
Tauri + Vite. Requires Linux GTK/WebKit system libs. |
npm run typecheck— TypeScript type checknpm run test— Vitest unit + integration tests (usesbetter-sqlite3for test harness)npm run test:e2e— Playwright e2e (auto-starts Vite withVITE_E2E_SQLITE=1)cd src-tauri && cargo test— Rust unit tests
- The Rust toolchain must be stable 1.95+ (the Cargo.lock pins crates requiring edition 2024). If
cargo testfails with "featureedition2024is required", runrustup default stableto pick up the latest installed stable. npm run dev:webwithoutVITE_E2E_SQLITE=1will stall at "Loading database..." because the web fallback path only activates with that env var. The e2e Playwright config sets this automatically.- System packages required for Tauri Linux builds/tests:
libgtk-3-dev,libwebkit2gtk-4.1-dev,libsoup-3.0-dev,libjavascriptcoregtk-4.1-dev. - Optional system packages for full doc parsing:
antiword,tesseract-ocr,poppler-utils. - Playwright needs Chromium installed:
npx playwright install chromium.
See README.md for build/run/test commands and scripts/setup-cloud-agent-env.sh for the full cloud/CI bootstrap script.