Skip to content

A modern, cross-platform database management and visualization tool Built with Tauri, React, and TypeScript

License

Notifications You must be signed in to change notification settings

Relwave/relwave-app

Repository files navigation

RelWave Logo

RelWave

Modern Database Management & Visualization

A powerful, cross-platform desktop tool built with Tauri, React, and TypeScript

Version License Platform

πŸ“₯ Download β€’ ✨ Features β€’ πŸš€ Quick Start β€’ πŸ“š Documentation


🎯 Why RelWave?

Unlike web-based database tools, RelWave runs natively on your desktop with direct connections to your databases, offering:


Native Performance
Direct database connections without web overhead

Enhanced Security
Encrypted credentials stored locally

Full Control
Complete offline functionality

✨ Features

πŸ—„οΈ Multi-Database Support
  • PostgreSQL - Full support for advanced features
  • MySQL - Complete MySQL 5.7+ compatibility
  • MariaDB - Optimized for MariaDB-specific features
πŸ“Š Visual Database Tools
  • ER Diagrams - Auto-generate entity-relationship diagrams
  • Schema Explorer - Intuitive table and column browsing
  • Data Visualization - Built-in charts and graphs
  • Query Builder - Visual query construction
⚑ Developer-Friendly
  • SQL Editor - Syntax highlighting and auto-completion
  • Export Data - CSV, JSON, and SQL formats
  • Connection Management - Save and organize multiple databases
  • Auto-Updates - Stay up-to-date automatically

πŸš€ Quick Start

πŸ“₯ Installation

Platform Download Description
Windows .exe | .msi NSIS installer (recommended) or MSI package
Linux .deb | .AppImage Debian package or portable AppImage

πŸ‘‰ Download the latest release β†’

πŸ› οΈ Build from Source

Click to expand build instructions

Prerequisites

# Required tools
- Node.js 18+
- pnpm
- Rust (for Tauri)

Steps

# 1. Clone the repository
git clone https://github.com/Relwave/relwave-app.git
cd relwave-app

# 2. Install dependencies
pnpm install

# 3. Install bridge dependencies
cd bridge && pnpm install && cd ..

# 4. Run in development mode
pnpm tauri dev

Building for Production

Windows:

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 build

Linux:

# Install dependencies
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf

# Build
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 build

πŸ“š Documentation

πŸ—οΈ Architecture

RelWave uses a bridge architecture for optimal performance:

The application uses a bridge architecture:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     JSON-RPC     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Tauri/React   β”‚ <──────────────> β”‚  Node.js Bridge β”‚
β”‚    Frontend     β”‚   stdin/stdout   β”‚   (pg, mysql2)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                              β”‚
                                              β–Ό
                                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                     β”‚    Databases    β”‚
                                     β”‚ PostgreSQL/MySQLβ”‚
                                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Benefits:

  • πŸš€ Native database drivers without Rust bindings
  • πŸ”’ Process isolation for enhanced security
  • 🎯 Optimized for each database type

πŸ“ Project Structure

RelWave/
β”œβ”€β”€ 🎨 src/                      # React frontend
β”‚   β”œβ”€β”€ components/              # UI components
β”‚   β”‚   β”œβ”€β”€ chart/               # Visualization components
β”‚   β”‚   β”œβ”€β”€ er-diagram/          # ER diagram renderer
β”‚   β”‚   β”œβ”€β”€ query-builder/       # Visual query builder
β”‚   β”‚   └── schema-explorer/     # Schema navigation
β”‚   β”œβ”€β”€ hooks/                   # Custom React hooks
β”‚   β”œβ”€β”€ services/                # API layer
β”‚   └── types/                   # TypeScript definitions
β”‚
β”œβ”€β”€ πŸŒ‰ bridge/                   # Database bridge (Node.js)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ connectors/          # Database drivers
β”‚   β”‚   β”œβ”€β”€ handlers/            # JSON-RPC handlers
β”‚   β”‚   β”œβ”€β”€ queries/             # SQL templates
β”‚   β”‚   └── services/            # Business logic
β”‚   └── __tests__/               # Test suite
β”‚
└── πŸ¦€ src-tauri/                # Tauri backend (Rust)
    β”œβ”€β”€ src/                     # Rust source
    β”œβ”€β”€ capabilities/            # Permissions
    └── resources/               # Bundled assets

βš™οΈ Configuration

Database Connections:

Platform Configuration Path
Windows %APPDATA%\relwave\databases.json
Linux ~/.relwave/databases.json

πŸ” Security Note: Credentials are encrypted and stored separately using machine-specific keys

Environment Variables:

Variable Purpose
RELWAVE_HOME Override default config directory

πŸ§ͺ Testing

Running the Test Suite

Prerequisites

Start test databases with Docker:

cd bridge
docker-compose -f docker-compose.test.yml up -d

Configure environment variables (create bridge/.env):

# PostgreSQL
REAL_POSTGRES_HOST=localhost
REAL_POSTGRES_PORT=5432
REAL_POSTGRES_USER=testuser
REAL_POSTGRES_PASSWORD=testpass
REAL_POSTGRES_DATABASE=testdb

# MySQL
REAL_MYSQL_HOST=localhost
REAL_MYSQL_PORT=3306
REAL_MYSQL_USER=testuser
REAL_MYSQL_PASSWORD=testpass
REAL_MYSQL_DATABASE=testdb

# MariaDB
REAL_MARIADB_HOST=localhost
REAL_MARIADB_PORT=3307
REAL_MARIADB_USER=testuser
REAL_MARIADB_PASSWORD=testpass
REAL_MARIADB_DATABASE=testdb

Run Tests

cd bridge
pnpm test

Test Coverage

  • βœ… Database service operations
  • βœ… Connection management
  • βœ… PostgreSQL integration
  • βœ… MySQL integration
  • βœ… MariaDB integration
  • βœ… Query result caching
  • βœ… Encryption & persistence

🀝 Contributing

We welcome contributions! Here's how to get started:

  1. 🍴 Fork the repository
  2. 🌿 Create a feature branch: git checkout -b feature/amazing-feature
  3. πŸ’Ύ Commit your changes: git commit -m 'Add amazing feature'
  4. πŸ“€ Push to the branch: git push origin feature/amazing-feature
  5. πŸŽ‰ Open a Pull Request

πŸ“‹ Contribution Guidelines

  • Follow the existing code style
  • Add tests for new features
  • Update documentation as needed
  • Ensure all tests pass before submitting

πŸ”„ Auto-Updates

RelWave keeps itself up-to-date automatically:

  • βœ… Checks for updates on startup
  • βœ… Downloads in the background
  • βœ… Prompts to install when ready
  • βœ… Cryptographically signed releases

πŸ› οΈ Built With

Tauri
Desktop Framework

React
UI Library


TypeScript
Type Safety

React Flow
Diagrams

Tailwind CSS
Styling

Special Thanks To

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ’™ Visualize Your Database with RelWave ✨

⭐ Star us on GitHub β€’ πŸ› Report Bug β€’ πŸ’‘ Request Feature

Made with ❀️ by the RelWave team

About

A modern, cross-platform database management and visualization tool Built with Tauri, React, and TypeScript

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages