Skip to content

minhe51805/TabLer

Repository files navigation

TableR

A fast, modern, cross-platform database client for developers

Explore the docs »

Report Bug · Request Feature · Discussions

License: GPL v3 Tauri React Rust TypeScript

Works on Windows · macOS · Linux


📖 Table of Contents


📋 About

TableR is a lightweight, high-performance database client built with Tauri, React, and Rust. It provides a unified interface for managing multiple database systems while maintaining native performance and a modern user experience.

Designed for developers who need a reliable, fast, and feature-rich database tool without the bloat of traditional clients.


✨ Features

🔌 Connection Management

  • Multi-database support - Connect to 7+ database types
  • Secure credential storage - Passwords encrypted via OS keyring
  • Connection testing - Validate connections before saving
  • URI support - Import connection strings directly

📊 Data Browser

  • Hierarchical tree view - Navigate databases, schemas, and tables
  • Smart filtering - Search and filter tables by name
  • Quick actions - Right-click context menus for common operations

📋 Data Viewer

  • Pagination - Configurable page sizes for large datasets
  • Column sorting - Sort by any column ascending/descending
  • Cell operations - Copy, edit, and nullify cell values
  • Row statistics - View total row count and filtered results

📝 SQL Editor

  • Monaco Editor - Same engine as VS Code
  • Syntax highlighting - SQL dialect-aware highlighting
  • IntelliSense - Auto-completion for tables, columns, keywords
  • AI Assistant - AI-powered SQL generation (Ctrl+K)
  • Query results - Tabular output with execution time
  • Error detection - Inline error highlighting

🛠️ Schema Editor

  • Column management - View and edit columns, types, constraints
  • Index viewer - Explore indexes with column details
  • Foreign keys - Visualize table relationships
  • Change staging - Batch multiple changes before applying
  • SQL preview - Review generated SQL before execution

🗂️ Multi-tab Interface

  • Unlimited tabs - Open multiple queries simultaneously
  • Tab organization - Drag to reorder, close individually
  • Session persistence - Restore tabs on restart

🗄️ Supported Databases

Database Version Driver Status
PostgreSQL 9.6+ SQLx ✅ Full
MySQL 5.7+ SQLx ✅ Full
SQLite 3.x SQLx ✅ Full
MSSQL 2017+ SQLx ✅ Full
ClickHouse 21.8+ SQLx ✅ Full
LibSQL Latest SQLx ✅ Full
MariaDB 10.2+ SQLx ✅ Full

📸 Screenshots

Add your screenshots here

Connection Manager SQL Editor Data Viewer
Connections Editor Data

🏗️ Tech Stack

Category Technology Purpose
Runtime Tauri 2 Desktop application framework
Backend Rust + SQLx Database drivers & connection pooling
Frontend React 19 + TypeScript 5 UI components
Styling Tailwind CSS 4 Utility-first CSS
Editor Monaco Editor Code editing
Data Grid TanStack Table Table state management
State Zustand Global state management
Icons Lucide React Icon library

🏛️ Architecture

┌─────────────────────────────────────────────────────────────┐
│                      TableR Application                      │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────────┐    │
│  │              React Frontend (TypeScript)            │    │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │    │
│  │  │Connection│ │  SQL     │ │   Data   │ │Schema  │ │    │
│  │  │ Manager  │ │ Editor   │ │  Viewer  │ │Editor  │ │    │
│  │  └──────────┘ └──────────┘ └──────────┘ └────────┘ │    │
│  └─────────────────────────────────────────────────────┘    │
│                            │                                 │
│                    Tauri IPC Commands                        │
│                            │                                 │
│  ┌─────────────────────────────────────────────────────┐    │
│  │                Rust Backend (SQLx)                  │    │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │    │
│  │  │PostgreSQL│ │  MySQL   │ │  SQLite  │ │ MSSQL  │ │    │
│  │  │  Driver  │ │  Driver  │ │  Driver  │ │ Driver │ │    │
│  │  └──────────┘ └──────────┘ └──────────┘ └────────┘ │    │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │    │
│  │  │ClickHouse│ │  LibSQL  │ │ MariaDB  │            │    │
│  │  │  Driver  │ │  Driver  │ │  Driver  │            │    │
│  │  └──────────┘ └──────────┘ └──────────┘            │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘

🚀 Getting Started

Prerequisites

Ensure you have the following installed:

  • Node.js 18+ (LTS recommended)
  • Rust 1.70+
  • Platform-specific tools:
Platform Requirements
Windows Visual Studio Build Tools
macOS Xcode Command Line Tools
Linux build-essential, libwebkit2gtk-4.1-dev, libssl-dev, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-dev

Ubuntu/Debian:

sudo apt update
sudo apt install -y build-essential libwebkit2gtk-4.1-dev libssl-dev \
  libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev

Fedora:

sudo dnf install -y webkit2gtk4.1-devel openssl-devel gtk3-devel \
  libappindicator-gtk3-devel librsvg2-devel

Installation

  1. Clone the repository

    git clone https://github.com/minhe51805/TabLer.git
    cd TabLer
  2. Install Node.js dependencies

    npm install
  3. Verify Rust installation

    rustc --version
    cargo --version

Development

Start the development server with hot reload:

npm run tauri dev

This will:

  • Build the Rust backend in debug mode
  • Start the React frontend with Vite
  • Launch the desktop application

Building

Create a production build:

npm run tauri build

Output artifacts will be in:

  • src-tauri/target/release/bundle/

💻 Usage

Keyboard Shortcuts

Category Shortcut Action
Editor Ctrl+Enter Execute SQL query
Ctrl+K AI SQL assistant
Ctrl+N New query tab
Navigation Ctrl+B Toggle sidebar
Ctrl+Space Toggle AI panel
Ctrl+Shift+P Open command palette
View `Ctrl+`` Toggle results pane
Ctrl+0 Reset sidebar width
Ctrl+= Increase font size
Ctrl+- Decrease font size
Tabs Ctrl+W Close current tab
Ctrl+Tab Switch to next tab
Ctrl+Shift+Tab Switch to previous tab

📁 Project Structure

TableR/
├── .github/                    # GitHub workflows & templates
├── docs/                       # Documentation
├── fixtures/                   # Test fixtures
├── src/                        # React frontend
│   ├── components/             # UI components
│   │   ├── AI/                 # AI integration
│   │   ├── ConnectionForm/     # Connection dialog
│   │   ├── DataGrid/           # Data table component
│   │   ├── Sidebar/            # Database navigator
│   │   ├── SQLEditor/          # Monaco editor wrapper
│   │   └── TableStructure/     # Schema editor
│   ├── hooks/                  # Custom React hooks
│   ├── stores/                 # Zustand stores
│   ├── types/                  # TypeScript definitions
│   ├── utils/                  # Helper functions
│   ├── i18n.ts                 # Internationalization
│   └── App.tsx                 # Root component
├── src-tauri/                  # Rust backend
│   ├── icons/                  # App icons
│   ├── src/
│   │   ├── commands/           # Tauri IPC handlers
│   │   ├── database/           # Database drivers
│   │   └── storage/            # Connection persistence
│   ├── Cargo.toml              # Rust dependencies
│   └── tauri.conf.json         # Tauri configuration
├── index.html                  # HTML entry point
├── package.json                # Node.js dependencies
├── tsconfig.json               # TypeScript config
├── vite.config.ts              # Vite bundler config
└── README.md                   # This file

🛣️ Roadmap

v0.1 (Current)

  • Multi-database support
  • SQL editor with AI assistance
  • Data viewer with pagination
  • Schema editor

v0.2 (Planned)

  • Query history & bookmarks
  • Export to CSV/JSON/SQL
  • Database backup/restore
  • Theme customization

v0.3 (Future)

  • Visual query builder
  • Real-time collaboration
  • Plugin system
  • Mobile companion app

See the open issues for a full list of proposed features and known issues.


🤝 Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Getting Started

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'feat: add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Guidelines

  • Follow Conventional Commits
  • Write tests for new features
  • Update documentation as needed
  • Ensure CI passes before requesting review

Please read our Contributing Guide and Code of Conduct for details.


📄 License

Distributed under the GNU General Public License v3.0. See LICENSE for more information.


☕ Support

If you find TableR helpful, consider buying me a coffee! Your support helps keep this project alive and growing.

Buy Me A Coffee

🙏 Acknowledgments


📬 Connect

GitHub Issues Discussions

Built with ❤️ by minjev

About

No description or website provided.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors