QueryArk
A fast, lightweight database IDE for developers.
One app for 17 database engines — SQL, NoSQL, graph, key-value, and analytics.
---
## Supported Databases
| SQL | Analytics | Document | Wide Column | Key-Value | Graph |
|-----|-----------|----------|-------------|-----------|-------|
| PostgreSQL | Snowflake | MongoDB | Cassandra | Redis | Neo4j |
| MySQL | BigQuery | DynamoDB | ScyllaDB | | |
| MariaDB | ClickHouse | | | | |
| SQLite | Redshift | | | | |
| MSSQL | | | | | |
| CockroachDB | | | | | |
## Features
**Query Editor**
- CodeMirror 6 with multi-dialect SQL highlighting (PostgreSQL, MySQL, SQLite, MSSQL, Cassandra)
- Schema-aware autocomplete (tables, columns, functions)
- Query formatting, comment toggle, error highlighting
- Multi-statement execution with multiple result sets
- Query history and saved queries
- EXPLAIN ANALYZE with visual tree view
- Query cancellation
**Data Grid**
- Virtual scrolling (100K+ rows)
- Inline cell editing (double-click), bulk edit mode with undo/redo
- Column sorting, filtering, resizing, reordering
- Row selection, multi-row delete, row insertion
- Type-aware editing (boolean checkbox, JSON textarea, NULL pill badges)
- Copy/paste, copy as CSV/JSON/INSERT/Markdown
- Context menu with filter-by-value
**Schema Browser**
- Expandable tree: schemas > tables > columns, views, functions, sequences, enums
- Table structure view with columns, indexes, foreign keys tabs
- DDL viewer (CREATE TABLE) with copy button
- Table creation, alteration, and index management GUIs with live DDL preview
- Search/filter within the tree
- Row count and table size stats
**NoSQL Support**
- MongoDB / DynamoDB: document browsing, JSON viewer, insert/update/delete
- Redis: type-aware viewer (string, list, set, hash, zset), scan/get/set/delete
- Neo4j: label browser, relationship types, node data grid
- Cassandra / ScyllaDB: CQL queries, schema browsing
**Connection Management**
- Connection groups/folders with color coding
- SSH tunneling (local port forwarding via russh)
- SSL certificates (CA, client cert, client key)
- OS keychain integration (macOS Keychain, Windows Credential Manager, Linux Secret Service)
- Connection URL parsing (`postgres://`, `mysql://`, `mongodb://`, `redis://`, `bolt://`, `sqlite:`)
- Connection pool tuning (pool size, idle timeout, acquire timeout)
- Connection duplication
**Data Export & Import**
- Export to CSV, JSON, SQL (INSERT statements), DDL
- Import from CSV with bulk loading
- Copy selected rows as CSV/JSON/INSERT/Markdown
**Transaction Support**
- BEGIN / COMMIT / ROLLBACK controls in the UI
- Supported for PostgreSQL, MySQL, MariaDB, SQLite, CockroachDB, Redshift
**UI & UX**
- Dark theme (default) and light theme (Catppuccin Latte) with toggle
- Tab system with drag-and-drop reordering, pinning, split panes
- Command palette (Ctrl+P) with fuzzy search
- Configurable keyboard shortcuts
- Window state and session persistence
- Settings modal (font sizes, page size, confirmations)
- Auto-updater with in-app notifications
## Installation
### Download
Grab the latest release for your platform from [GitHub Releases](https://github.com/berbicanes/queryark/releases):
| Platform | Format |
|----------|--------|
| macOS (Apple Silicon) | `.dmg` |
| macOS (Intel) | `.dmg` |
| Windows | `.exe` (NSIS installer) / `.msi` |
| Linux | `.deb` / `.rpm` / `.AppImage` |
### Build from Source
**Prerequisites:**
- [Node.js](https://nodejs.org/) 18+
- [Rust](https://rustup.rs/) 1.70+
- [Tauri CLI](https://v2.tauri.app/start/prerequisites/)
- Platform-specific dependencies (see [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/))
```bash
# Clone the repository
git clone https://github.com/berbicanes/queryark.git
cd queryark
# Install frontend dependencies
npm install
# Run in development mode
npm run tauri dev
# Build production binary
npm run tauri build
```
## Tech Stack
| Layer | Technology |
|-------|------------|
| Desktop runtime | Tauri 2 (Rust) |
| Frontend | SvelteKit 5, Svelte 5 runes, TypeScript |
| SQL editor | CodeMirror 6 |
| SQL drivers | sqlx (PG, MySQL, SQLite), tiberius (MSSQL), clickhouse, snowflake-api, gcp-bigquery-client |
| NoSQL drivers | mongodb, scylla, redis, neo4rs, aws-sdk-dynamodb |
| SSH tunneling | russh |
| OS keychain | keyring |
| Styling | CSS variables, JetBrains Mono / Inter |
## Keyboard Shortcuts
| Action | Shortcut |
|--------|----------|
| Run query | `Ctrl+Enter` |
| New query tab | `Ctrl+N` |
| Close tab | `Ctrl+W` |
| Next / Previous tab | `Ctrl+Tab` / `Ctrl+Shift+Tab` |
| Command palette | `Ctrl+P` |
| Toggle sidebar | `Ctrl+B` |
| Toggle theme | `Ctrl+Shift+T` |
| Save query | `Ctrl+S` |
| Refresh schema | `F5` |
| Format SQL | `Ctrl+Shift+F` |
| Keyboard shortcuts | `Ctrl+K` |
All shortcuts are customizable in the shortcuts panel.
## Project Structure
```
src/ # Frontend (SvelteKit + TypeScript)
├── lib/
│ ├── components/ # UI components (editor, grid, modals, sidebar, tabs)
│ ├── services/ # Tauri IPC wrappers
│ ├── stores/ # Svelte 5 rune stores
│ ├── types/ # TypeScript types
│ └── utils/ # Formatters, SQL helpers
└── routes/ # SvelteKit pages
src-tauri/ # Backend (Rust)
├── src/
│ ├── commands/ # Tauri command handlers
│ ├── db/
│ │ ├── drivers/ # Database driver implementations (16 drivers)
│ │ ├── traits.rs # DbDriver, SqlDriver, DocumentDriver, KeyValueDriver, GraphDriver
│ │ ├── pool.rs # Connection pool manager
│ │ └── handle.rs # DriverHandle enum
│ ├── models/ # Serde structs
│ └── error.rs # AppError enum
└── Cargo.toml
```
## Development
```bash
npm run dev # Start Vite dev server (port 1420)
npm run build # Build frontend
npm run tauri dev # Run full Tauri app in dev mode
npm run tauri build # Build production binary
npm run check # TypeScript / Svelte type checking
```
## Contributing
Contributions are welcome. Please open an issue first to discuss what you'd like to change.
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/my-feature`)
3. Commit your changes
4. Push to the branch (`git push origin feature/my-feature`)
5. Open a Pull Request
## License
[MIT](LICENSE)