purequery Piotr Zieliński
winget install --id=pzielinski.purequery -e purequery is a minimal, keyboard-driven, fully configurable desktop database client built on Tauri 2 with a React 19 frontend.
winget install --id=pzielinski.purequery -e purequery is a minimal, keyboard-driven, fully configurable desktop database client built on Tauri 2 with a React 19 frontend.
A minimal, keyboard-driven, fully configurable, desktop database client.
Built as a Tauri 2 desktop app with a React 19 + TypeScript frontend on the TanStack stack (Router, Query, Table, Form, Hotkeys), shadcn/ui + Tailwind v4, and dnd-kit for sidebar drag-and-drop.
mise install provisions it (and it auto-activates on cd once mise activate is set up).rustc, cargo).If the Rust toolchain or system prerequisites are missing, npm start fails fast with
a build error from Cargo.
Supported engines: Postgres, MySQL, SQLite, MongoDB, SQL Server, and
DynamoDB (PartiQL; connects with a region + optional keys/endpoint, works against real AWS or
DynamoDB Local). The per-database Backup... action needs no external tools - purequery generates
the dump itself (Postgres/MySQL -> a data-only .sql INSERT script, SQLite -> a file copy, MongoDB
-> a .jsonl Extended-JSON export, DynamoDB -> a .jsonl item-per-line export).
mise install
npm install
| Command | Description |
|---|---|
npm start | Run the app in development (tauri dev). |
npm run tauri build | Build the distributable desktop bundle. |
purequery.workspace.json manifest + one .db.json per database); open-content tabs,
resizable sidebar/content/console splits, Cmd/Ctrl+B/Cmd/Ctrl+J toggles, command palette
(Cmd/Ctrl+K), drag-and-drop + context menus.sqlx, MongoDB, SQL Server via
tiberius, DynamoDB via the AWS SDK); tables group under schema rows (Postgres/SQL Server);
opening a table fetches its content into a data grid with server-side sort, paging, and in-grid
editing (a Changes tab stages mutations - record / JSON views included).;-separated statements run on
one held connection (your BEGIN/COMMIT spans them); saved-script document tabs; query
Variables ({{name}}); read-only JS Script tab with an injected db API in an isolated
worker.db..(...) commands; Extended-JSON filters; document CRUD.tiberius driver.endpoint override for DynamoDB Local.keymap.json.Releases are cut by the Release GitHub Actions workflow (workflow_dispatch,
input a tag like v0.2.0) - it builds macOS / Windows / Linux bundles via
tauri-action and publishes a draft GitHub release with the installers plus
updater artifacts (.sig files + a latest.json).
The app self-updates via the Tauri v2 updater plugin: on launch (and via
Settings > Updates > Check for updates) it reads
releases/latest/download/latest.json and, on a newer signed version, shows a
persistent toast with an Update now action that downloads and relaunches.
Signing requires two GitHub repo secrets consumed by the release workflow:
TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD (the
minisign keypair whose public half is baked into tauri.conf.json
plugins.updater.pubkey). Caveat: auto-update only works forward from the
first updater-enabled release - a build already installed predating the updater
must be upgraded by a manual download once.
UI conventions (no rounded corners, 1px dividers, density, etc.) live in docs/design.md.