{"id":47625295,"url":"https://github.com/minhe51805/tabler","last_synced_at":"2026-04-06T21:01:05.447Z","repository":{"id":345287746,"uuid":"1178948211","full_name":"minhe51805/TabLer","owner":"minhe51805","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-02T04:46:08.000Z","size":1569,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-02T06:40:29.023Z","etag":null,"topics":["libsql","mongodb","mssql","postgresql","sqlite"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/minhe51805.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-11T14:30:57.000Z","updated_at":"2026-04-02T04:46:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/minhe51805/TabLer","commit_stats":null,"previous_names":["minhe51805/tabler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/minhe51805/TabLer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minhe51805%2FTabLer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minhe51805%2FTabLer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minhe51805%2FTabLer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minhe51805%2FTabLer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/minhe51805","download_url":"https://codeload.github.com/minhe51805/TabLer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minhe51805%2FTabLer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31489427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["libsql","mongodb","mssql","postgresql","sqlite"],"created_at":"2026-04-01T22:44:58.467Z","updated_at":"2026-04-06T21:01:05.425Z","avatar_url":"https://github.com/minhe51805.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eTableR\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    A fast, modern, cross-platform database client for developers\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/minhe51805/TabLer\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/minhe51805/TabLer/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/minhe51805/TabLer/issues\"\u003eRequest Feature\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/minhe51805/TabLer/discussions\"\u003eDiscussions\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/minhe51805/TabLer/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-GPLv3-blue.svg\" alt=\"License: GPL v3\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://tauri.app\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Tauri-2.0-24C8CD?logo=tauri\" alt=\"Tauri\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://react.dev\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/React-19-61DAFB?logo=react\" alt=\"React\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.rust-lang.org\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Rust-latest-DEA584?logo=rust\" alt=\"Rust\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.typescriptlang.org\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript\" alt=\"TypeScript\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eWorks on Windows · macOS · Linux\u003c/strong\u003e\n\u003c/p\u003e\n\n---\n\n## 📖 Table of Contents\n\n- [About](#about)\n- [Features](#features)\n- [Supported Databases](#supported-databases)\n- [Screenshots](#screenshots)\n- [Tech Stack](#tech-stack)\n- [Architecture](#architecture)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Development](#development)\n  - [Building](#building)\n- [Usage](#usage)\n  - [Keyboard Shortcuts](#keyboard-shortcuts)\n- [Project Structure](#project-structure)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n- [Acknowledgments](#acknowledgments)\n\n---\n\n## 📋 About\n\n**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.\n\nDesigned for developers who need a reliable, fast, and feature-rich database tool without the bloat of traditional clients.\n\n---\n\n## ✨ Features\n\n### 🔌 Connection Management\n- **Multi-database support** - Connect to 7+ database types\n- **Secure credential storage** - Passwords encrypted via OS keyring\n- **Connection testing** - Validate connections before saving\n- **URI support** - Import connection strings directly\n\n### 📊 Data Browser\n- **Hierarchical tree view** - Navigate databases, schemas, and tables\n- **Smart filtering** - Search and filter tables by name\n- **Quick actions** - Right-click context menus for common operations\n\n### 📋 Data Viewer\n- **Pagination** - Configurable page sizes for large datasets\n- **Column sorting** - Sort by any column ascending/descending\n- **Cell operations** - Copy, edit, and nullify cell values\n- **Row statistics** - View total row count and filtered results\n\n### 📝 SQL Editor\n- **Monaco Editor** - Same engine as VS Code\n- **Syntax highlighting** - SQL dialect-aware highlighting\n- **IntelliSense** - Auto-completion for tables, columns, keywords\n- **AI Assistant** - AI-powered SQL generation (Ctrl+K)\n- **Query results** - Tabular output with execution time\n- **Error detection** - Inline error highlighting\n\n### 🛠️ Schema Editor\n- **Column management** - View and edit columns, types, constraints\n- **Index viewer** - Explore indexes with column details\n- **Foreign keys** - Visualize table relationships\n- **Change staging** - Batch multiple changes before applying\n- **SQL preview** - Review generated SQL before execution\n\n### 🗂️ Multi-tab Interface\n- **Unlimited tabs** - Open multiple queries simultaneously\n- **Tab organization** - Drag to reorder, close individually\n- **Session persistence** - Restore tabs on restart\n\n---\n\n## 🗄️ Supported Databases\n\n| Database | Version | Driver | Status |\n|----------|---------|--------|--------|\n| **PostgreSQL** | 9.6+ | SQLx | ✅ Full |\n| **MySQL** | 5.7+ | SQLx | ✅ Full |\n| **SQLite** | 3.x | SQLx | ✅ Full |\n| **MSSQL** | 2017+ | SQLx | ✅ Full |\n| **ClickHouse** | 21.8+ | SQLx | ✅ Full |\n| **LibSQL** | Latest | SQLx | ✅ Full |\n| **MariaDB** | 10.2+ | SQLx | ✅ Full |\n\n---\n\n## 📸 Screenshots\n\n\u003e *Add your screenshots here*\n\n| Connection Manager | SQL Editor | Data Viewer |\n|-------------------|------------|-------------|\n| ![Connections](./docs/screenshots/connections.png) | ![Editor](./docs/screenshots/editor.png) | ![Data](./docs/screenshots/data.png) |\n\n---\n\n## 🏗️ Tech Stack\n\n| Category | Technology | Purpose |\n|----------|------------|---------|\n| **Runtime** | [Tauri 2](https://tauri.app) | Desktop application framework |\n| **Backend** | [Rust](https://www.rust-lang.org) + [SQLx](https://github.com/launchbadge/sqlx) | Database drivers \u0026 connection pooling |\n| **Frontend** | [React 19](https://react.dev) + [TypeScript 5](https://www.typescriptlang.org) | UI components |\n| **Styling** | [Tailwind CSS 4](https://tailwindcss.com) | Utility-first CSS |\n| **Editor** | [Monaco Editor](https://microsoft.github.io/monaco-editor) | Code editing |\n| **Data Grid** | [TanStack Table](https://tanstack.com/table) | Table state management |\n| **State** | [Zustand](https://zustand-demo.pmnd.rs) | Global state management |\n| **Icons** | [Lucide React](https://lucide.dev) | Icon library |\n\n---\n\n## 🏛️ Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                      TableR Application                      │\n├─────────────────────────────────────────────────────────────┤\n│  ┌─────────────────────────────────────────────────────┐    │\n│  │              React Frontend (TypeScript)            │    │\n│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │    │\n│  │  │Connection│ │  SQL     │ │   Data   │ │Schema  │ │    │\n│  │  │ Manager  │ │ Editor   │ │  Viewer  │ │Editor  │ │    │\n│  │  └──────────┘ └──────────┘ └──────────┘ └────────┘ │    │\n│  └─────────────────────────────────────────────────────┘    │\n│                            │                                 │\n│                    Tauri IPC Commands                        │\n│                            │                                 │\n│  ┌─────────────────────────────────────────────────────┐    │\n│  │                Rust Backend (SQLx)                  │    │\n│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │    │\n│  │  │PostgreSQL│ │  MySQL   │ │  SQLite  │ │ MSSQL  │ │    │\n│  │  │  Driver  │ │  Driver  │ │  Driver  │ │ Driver │ │    │\n│  │  └──────────┘ └──────────┘ └──────────┘ └────────┘ │    │\n│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │    │\n│  │  │ClickHouse│ │  LibSQL  │ │ MariaDB  │            │    │\n│  │  │  Driver  │ │  Driver  │ │  Driver  │            │    │\n│  │  └──────────┘ └──────────┘ └──────────┘            │    │\n│  └─────────────────────────────────────────────────────┘    │\n└─────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\nEnsure you have the following installed:\n\n- **[Node.js](https://nodejs.org/)** 18+ (LTS recommended)\n- **[Rust](https://www.rust-lang.org/tools/install)** 1.70+\n- **Platform-specific tools:**\n\n| Platform | Requirements |\n|----------|--------------|\n| **Windows** | [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) |\n| **macOS** | [Xcode Command Line Tools](https://developer.apple.com/xcode/) |\n| **Linux** | `build-essential`, `libwebkit2gtk-4.1-dev`, `libssl-dev`, `libgtk-3-dev`, `libayatana-appindicator3-dev`, `librsvg2-dev` |\n\n**Ubuntu/Debian:**\n```bash\nsudo apt update\nsudo apt install -y build-essential libwebkit2gtk-4.1-dev libssl-dev \\\n  libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev\n```\n\n**Fedora:**\n```bash\nsudo dnf install -y webkit2gtk4.1-devel openssl-devel gtk3-devel \\\n  libappindicator-gtk3-devel librsvg2-devel\n```\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/minhe51805/TabLer.git\n   cd TabLer\n   ```\n\n2. **Install Node.js dependencies**\n   ```bash\n   npm install\n   ```\n\n3. **Verify Rust installation**\n   ```bash\n   rustc --version\n   cargo --version\n   ```\n\n### Development\n\nStart the development server with hot reload:\n\n```bash\nnpm run tauri dev\n```\n\nThis will:\n- Build the Rust backend in debug mode\n- Start the React frontend with Vite\n- Launch the desktop application\n\n### Building\n\nCreate a production build:\n\n```bash\nnpm run tauri build\n```\n\nOutput artifacts will be in:\n- `src-tauri/target/release/bundle/`\n\n---\n\n## 💻 Usage\n\n### Keyboard Shortcuts\n\n| Category | Shortcut | Action |\n|----------|----------|--------|\n| **Editor** | `Ctrl+Enter` | Execute SQL query |\n| | `Ctrl+K` | AI SQL assistant |\n| | `Ctrl+N` | New query tab |\n| **Navigation** | `Ctrl+B` | Toggle sidebar |\n| | `Ctrl+Space` | Toggle AI panel |\n| | `Ctrl+Shift+P` | Open command palette |\n| **View** | `Ctrl+\\`` | Toggle results pane |\n| | `Ctrl+0` | Reset sidebar width |\n| | `Ctrl+=` | Increase font size |\n| | `Ctrl+-` | Decrease font size |\n| **Tabs** | `Ctrl+W` | Close current tab |\n| | `Ctrl+Tab` | Switch to next tab |\n| | `Ctrl+Shift+Tab` | Switch to previous tab |\n\n---\n\n## 📁 Project Structure\n\n```\nTableR/\n├── .github/                    # GitHub workflows \u0026 templates\n├── docs/                       # Documentation\n├── fixtures/                   # Test fixtures\n├── src/                        # React frontend\n│   ├── components/             # UI components\n│   │   ├── AI/                 # AI integration\n│   │   ├── ConnectionForm/     # Connection dialog\n│   │   ├── DataGrid/           # Data table component\n│   │   ├── Sidebar/            # Database navigator\n│   │   ├── SQLEditor/          # Monaco editor wrapper\n│   │   └── TableStructure/     # Schema editor\n│   ├── hooks/                  # Custom React hooks\n│   ├── stores/                 # Zustand stores\n│   ├── types/                  # TypeScript definitions\n│   ├── utils/                  # Helper functions\n│   ├── i18n.ts                 # Internationalization\n│   └── App.tsx                 # Root component\n├── src-tauri/                  # Rust backend\n│   ├── icons/                  # App icons\n│   ├── src/\n│   │   ├── commands/           # Tauri IPC handlers\n│   │   ├── database/           # Database drivers\n│   │   └── storage/            # Connection persistence\n│   ├── Cargo.toml              # Rust dependencies\n│   └── tauri.conf.json         # Tauri configuration\n├── index.html                  # HTML entry point\n├── package.json                # Node.js dependencies\n├── tsconfig.json               # TypeScript config\n├── vite.config.ts              # Vite bundler config\n└── README.md                   # This file\n```\n\n---\n\n## 🛣️ Roadmap\n\n### v0.1 (Current)\n- [x] Multi-database support\n- [x] SQL editor with AI assistance\n- [x] Data viewer with pagination\n- [x] Schema editor\n\n### v0.2 (Planned)\n- [ ] Query history \u0026 bookmarks\n- [ ] Export to CSV/JSON/SQL\n- [ ] Database backup/restore\n- [ ] Theme customization\n\n### v0.3 (Future)\n- [ ] Visual query builder\n- [ ] Real-time collaboration\n- [ ] Plugin system\n- [ ] Mobile companion app\n\nSee the [open issues](https://github.com/minhe51805/TabLer/issues) for a full list of proposed features and known issues.\n\n---\n\n## 🤝 Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n### Getting Started\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'feat: add AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n### Guidelines\n\n- Follow [Conventional Commits](https://www.conventionalcommits.org/)\n- Write tests for new features\n- Update documentation as needed\n- Ensure CI passes before requesting review\n\nPlease read our [Contributing Guide](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) for details.\n\n---\n\n## 📄 License\n\nDistributed under the **GNU General Public License v3.0**. See [LICENSE](LICENSE) for more information.\n\n---\n\n## ☕ Support\n\nIf you find TableR helpful, consider buying me a coffee! Your support helps keep this project alive and growing.\n\n\u003ca href=\"https://buymeacoffee.com/minjev\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" width=\"217\" height=\"60\" /\u003e\n\u003c/a\u003e\n\n---\n\n## 🙏 Acknowledgments\n\n- [Tauri Team](https://tauri.app) - For the amazing desktop framework\n- [SQLx Contributors](https://github.com/launchbadge/sqlx) - For async Rust database drivers\n- [Monaco Editor](https://microsoft.github.io/monaco-editor) - For the code editor component\n- [TanStack](https://tanstack.com) - For headless UI utilities\n- [Lucide](https://lucide.dev) - For beautiful icons\n\n---\n\n## 📬 Connect\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/minhe51805/TabLer\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/GitHub-181717?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"GitHub\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/minhe51805/TabLer/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Issues-24292e?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"Issues\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/minhe51805/TabLer/discussions\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discussions-24292e?style=for-the-badge\u0026logo=github\u0026logoColor=white\" alt=\"Discussions\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eBuilt with ❤️ by minjev\u003c/strong\u003e\n\u003c/p\u003e\n","funding_links":["https://buymeacoffee.com/minjev"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminhe51805%2Ftabler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminhe51805%2Ftabler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminhe51805%2Ftabler/lists"}