A powerful, cross-platform desktop application for database management with native Git version control — built with Tauri, React, and TypeScript.
RelWave is a desktop-native database management tool that brings together schema exploration, data visualization, query building, and Git version control into a single cohesive interface. It connects directly to your databases using native drivers — no browser, no cloud dependency, no compromise.
For a comprehensive breakdown of all features, see the Feature Reference.
- Multi-database support — PostgreSQL, MySQL, and MariaDB with native drivers
- Auto-discovery — Detect local and Docker-based databases automatically
- Connection URL parsing — Import connections via standard database URLs
- Schema Explorer — Navigate tables, columns, indexes, and relationships
- Row operations — Insert, edit, and delete rows with foreign key support
- Migration management — Track, apply, and rollback schema migrations
- Repository management — Initialize and manage Git repositories from within the app
- Staging and commits — Stage files individually or in bulk with full diff preview
- Branch operations — Create, switch, and manage branches
- Remote sync — Push, pull, and fetch with remote repository support
- Change tracking — View file-level diffs and full commit history
- Stash management — Save and restore work-in-progress changes
- Smart .gitignore — Automatic generation and management of ignore rules
- ER Diagrams — Auto-generated, interactive entity-relationship diagrams
- Visual Query Builder — Drag-and-drop query construction with live SQL preview
- Data Visualization — Bar, line, pie, and scatter charts with export to PNG/SVG
- SQL Workspace — Multi-tab CodeMirror editor with syntax highlighting and execution
- Multi-format export — CSV, JSON, and SQL export for tables and query results
- Query history — Persistent history with instant replay
- Automatic updates — Background downloads with cryptographically signed releases
- Customizable themes — Light/dark modes with multiple accent color variants
| Platform | Formats | Notes |
|---|---|---|
| Windows | .exe · .msi |
NSIS installer (recommended) or MSI package |
| Linux | .deb · .AppImage |
Debian package or portable AppImage |
- Node.js 18+
- pnpm
- Rust toolchain (for Tauri)
git clone https://github.com/Relwave/relwave-app.git
cd relwave-app
# Install frontend dependencies
pnpm install
# Install bridge dependencies
cd bridge && pnpm install && cd ..
# Start development mode
pnpm tauri devWindows:
cd bridge && pnpm build && cd ..
npx pkg ./bridge/dist/index.cjs --target node18-win-x64 \
--output ./src-tauri/resources/bridge-x86_64-pc-windows-msvc.exe
pnpm tauri buildLinux:
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
cd bridge && pnpm build && cd ..
npx pkg ./bridge/dist/index.cjs --target node18-linux-x64 \
--output ./src-tauri/resources/bridge-x86_64-unknown-linux-gnu
pnpm tauri buildRelWave uses a bridge architecture — a Tauri/React frontend communicates with a Node.js process over JSON-RPC via stdin/stdout. The bridge handles all database and Git operations using native drivers.
┌──────────────────────────┐
│ Tauri + React UI │
│ (TypeScript) │
│ │
│ Database Explorer │
│ ER Diagrams │
│ Query Builder │
│ Git Interface │
└────────────┬─────────────┘
│ JSON-RPC (stdio)
│
┌────────────┴─────────────┐
│ Node.js Bridge │
│ │
│ pg · mysql2 │
│ simple-git │
│ Query Cache │
└────────────┬─────────────┘
│
┌─────┴──────┐
│ │
Databases Git Repos
Why this architecture?
| Benefit | Description |
|---|---|
| Performance | Native database drivers without complex Rust FFI bindings |
| Security | Process isolation prevents direct memory access vulnerabilities |
| Flexibility | New drivers and integrations added without modifying the Rust layer |
| Reliability | Independent process lifecycle — bridge crashes don't take down the UI |
relwave-app/
├── src/ # React frontend
│ ├── components/
│ │ ├── database/ # Database management UI
│ │ ├── er-diagram/ # ER diagram visualization
│ │ ├── git/ # Git interface components
│ │ ├── query-builder/ # Visual query builder
│ │ └── schema-explorer/ # Schema navigation
│ ├── hooks/ # Custom React hooks
│ ├── services/ # API communication layer
│ └── types/ # TypeScript type definitions
│
├── bridge/ # Node.js bridge process
│ ├── src/
│ │ ├── connectors/ # Database drivers (pg, mysql2)
│ │ ├── handlers/ # JSON-RPC request handlers
│ │ │ ├── databaseHandlers.ts
│ │ │ ├── gitHandlers.ts
│ │ │ └── gitAdvancedHandlers.ts
│ │ ├── services/ # Business logic and Git service
│ │ └── queries/ # SQL query templates
│ └── __tests__/ # Test suite
│
└── src-tauri/ # Tauri backend (Rust)
├── src/ # Application entry point
├── capabilities/ # Permission definitions
└── resources/ # Bundled bridge executable
Connection storage locations:
| Platform | Path |
|---|---|
| Windows | %APPDATA%\relwave\databases.json |
| Linux | ~/.config/relwave/databases.json |
All credentials are encrypted using machine-specific keys. Connection strings and passwords are never stored in plain text.
Environment variables:
| Variable | Description | Default |
|---|---|---|
RELWAVE_HOME |
Override configuration directory | — |
RELWAVE_LOG |
Enable debug logging | false |
RELWAVE_BRIDGE |
Custom bridge executable path | — |
Start the test databases using Docker:
cd bridge
docker-compose -f docker-compose.test.yml up -dCreate bridge/.env with the test configuration:
REAL_POSTGRES_HOST=localhost
REAL_POSTGRES_PORT=5432
REAL_POSTGRES_USER=testuser
REAL_POSTGRES_PASSWORD=testpass
REAL_POSTGRES_DATABASE=testdb
REAL_MYSQL_HOST=localhost
REAL_MYSQL_PORT=3306
REAL_MYSQL_USER=testuser
REAL_MYSQL_PASSWORD=testpass
REAL_MYSQL_DATABASE=testdb
REAL_MARIADB_HOST=localhost
REAL_MARIADB_PORT=3307
REAL_MARIADB_USER=testuser
REAL_MARIADB_PASSWORD=testpass
REAL_MARIADB_DATABASE=testdbcd bridge
pnpm test| Area | Status |
|---|---|
| Database service operations | Covered |
| Connection management | Covered |
| PostgreSQL integration | Covered |
| MySQL integration | Covered |
| MariaDB integration | Covered |
| Query result caching | Covered |
| Encryption and persistence | Covered |
| Git operations (status, commit, branch, remote) | Covered |
| Git advanced features (push, pull, fetch, revert) | Covered |
Contributions are welcome. Whether fixing bugs, adding features, or improving documentation — all help is appreciated.
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/relwave-app.git - Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'Add: description of change' - Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request
Guidelines:
- Follow the existing TypeScript and React conventions
- Add tests for new functionality
- Update documentation when applicable
- Write clear, descriptive commit messages
- Provide context in Pull Request descriptions
|
Tauri |
Rust |
React 18 |
TypeScript |
Node.js |
Git |
Additional libraries: Tailwind CSS, shadcn/ui, React Flow, Recharts, CodeMirror, React Query, simple-git, node-postgres, mysql2
This project is licensed under the MIT License. See LICENSE for details.
Database Management · Visual Schema Tools · Git Version Control
Star on GitHub · Download · Report Issues · Request Features