{"id":52116066,"url":"https://github.com/md-golamrabbani/keeldb","last_synced_at":"2026-08-05T02:30:22.334Z","repository":{"id":372581048,"uuid":"1305864444","full_name":"md-golamrabbani/keeldb","owner":"md-golamrabbani","description":"A production-safe database workbench — migrate, explore, guard \u0026 monitor MySQL / PostgreSQL / Supabase / Neon. Web + native desktop (Windows/macOS/Linux).","archived":false,"fork":false,"pushed_at":"2026-08-03T05:51:26.000Z","size":2159,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-08-03T07:09:09.075Z","etag":null,"topics":["database","database-gui","database-migration","desktop-app","developer-tools","erd","fastapi","mysql","neon","nextjs","postgresql","sql","sql-client","supabase","tauri"],"latest_commit_sha":null,"homepage":"https://md-golamrabbani.github.io/keeldb/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/md-golamrabbani.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/ROADMAP.md","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-07-19T16:35:05.000Z","updated_at":"2026-08-03T05:51:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/md-golamrabbani/keeldb","commit_stats":null,"previous_names":["md-golamrabbani/keeldb"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/md-golamrabbani/keeldb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/md-golamrabbani%2Fkeeldb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/md-golamrabbani%2Fkeeldb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/md-golamrabbani%2Fkeeldb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/md-golamrabbani%2Fkeeldb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/md-golamrabbani","download_url":"https://codeload.github.com/md-golamrabbani/keeldb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/md-golamrabbani%2Fkeeldb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36294659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-05T02:00:06.619Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["database","database-gui","database-migration","desktop-app","developer-tools","erd","fastapi","mysql","neon","nextjs","postgresql","sql","sql-client","supabase","tauri"],"created_at":"2026-08-05T02:30:21.429Z","updated_at":"2026-08-05T02:30:22.328Z","avatar_url":"https://github.com/md-golamrabbani.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"logo.svg\" alt=\"KeelDB\" width=\"96\" height=\"96\" /\u003e\n\n# KeelDB\n\n**A production-safe database workbench** — migrate, explore, guard, and monitor\n**MySQL · PostgreSQL · Supabase · Neon** (or an imported `.sql` dump) from one clean app,\non the web and as a native desktop app.\n\n[![Desktop build](https://github.com/md-golamrabbani/keeldb/actions/workflows/desktop.yml/badge.svg)](https://github.com/md-golamrabbani/keeldb/actions/workflows/desktop.yml)\n[![Latest release](https://img.shields.io/github/v/release/md-golamrabbani/keeldb?sort=semver)](https://github.com/md-golamrabbani/keeldb/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Platforms](https://img.shields.io/badge/desktop-Windows%20%C2%B7%20macOS%20%C2%B7%20Linux-informational)](https://github.com/md-golamrabbani/keeldb/releases)\n[![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n\n[**Download**](https://github.com/md-golamrabbani/keeldb/releases/latest) · [**Quick start**](#-run-from-source) · [**Features**](#-features) · [**Docs**](#-documentation) · [**Contributing**](CONTRIBUTING.md)\n\n\u003c/div\u003e\n\n---\n\nKeelDB is a GUI-driven database tool that does three jobs well:\n\n1. **Migrate** data between MySQL / PostgreSQL / Supabase / Neon — or from a `.sql` dump — with a visual\n   column-mapping canvas, safe per-column transforms, dry-runs, and batched, idempotent writes.\n2. **Explore** any database like a lightweight SQL client: browse \u0026 filter rows, edit inline (Workbench-style\n   staged saves), run SQL with autocomplete, and import/export tables.\n3. **Design \u0026 guard** — an interactive ERD of your schema, structure editing, health checks, and safety rails\n   that make writes to production deliberate rather than accidental.\n\nIt runs as a **web app** (FastAPI + Next.js) and ships as a **single-window native desktop app** for\nWindows, macOS, and Linux (Tauri, with the Python backend bundled as a sidecar — no separate install).\n\n## 📸 Screenshots\n\n| Explorer | SQL editor |\n| :---: | :---: |\n| ![Database Explorer](screenshots/explorer.png) | ![SQL editor](screenshots/sqleditor.png) |\n| **ERD / Designer** | **Diagrams** |\n| ![ERD](screenshots/erd.png) | ![Diagrams](screenshots/diagrams.png) |\n\n## ⬇️ Download\n\nGrab the installer for your OS from the [**Releases**](https://github.com/md-golamrabbani/keeldb/releases) page:\n\n| OS | File |\n| --- | --- |\n| **Windows** | `.msi` or `.exe` (NSIS installer) |\n| **macOS** (Apple Silicon \u0026 Intel) | `.dmg` |\n| **Linux** | `.AppImage`, `.deb`, or `.rpm` |\n\nThe desktop app is fully self-contained — the database backend is bundled, so there's nothing else to install.\n\n\u003e Prefer the web app, or want the latest `main`? See [**Run from source**](#-run-from-source).\n\n## ✨ Features\n\n### Migrate\n- **Any-to-any** across MySQL, PostgreSQL, Supabase, and Neon — or from an imported **`.sql` dump**\n  (mysqldump / pg_dump), parsed into a local read-only SQLite source that keeps its **PKs and FKs**.\n- **Visual column mapping** with **Auto-map** by normalized name, per-column **casts**\n  (`int/numeric/bool/date/timestamp/uuid/text`), sandboxed **transform expressions**, defaults, and\n  conflict keys. Type mismatches and unmapped NOT-NULL columns are flagged.\n- **Preview \u0026 dry-run** every row before writing; **conflict strategies** (insert / upsert / skip-duplicates),\n  batch size, WHERE filter, and stop-on-error.\n- **Output your way** — push into the target DB, or download the transformed rows as `.sql`, `.csv`, or `.json`.\n- **Reusable profiles** for connections and full mappings; **SSH-tunnel** support (bastion host).\n\n### Explore\n- **Tabbed table browser** — open many tables at once; tabs (and which schema they belong to) **persist across\n  restarts**, Workbench-style.\n- **Data grid** — rows-per-page, click-to-sort, all-column search, phpMyAdmin-style advanced filters, sticky\n  header and left columns, FK peek-and-jump.\n- **Workbench-style editing** — cell edits are **staged and highlighted**, then applied with **Save** or thrown\n  away with **Revert** (no accidental auto-writes); all writes target rows by primary key.\n- **SQL editor** — syntax highlighting, line gutter, **autocomplete** (keywords, tables, `table.column`),\n  real-time error detection, a resizable pane, **run-the-selection**, and a row-limit cap. Runs in a\n  transaction and rolls back on error.\n- **Import / export** tables as CSV / JSON / SQL.\n\n### Design \u0026 guard\n- **Interactive ERD** — drag tables, zoom, full-screen, export as PNG/JPG, and view reconstructed\n  `CREATE TABLE` DDL per table.\n- **Structure editor** — add / rename / retype / drop columns (MySQL \u0026 Postgres).\n- **Safety rails** — production connections require confirmation for writes; read-only mode blocks writes;\n  large tables load instantly via catalog row estimates instead of full-table `COUNT(*)`.\n- **AI assist (optional)** — natural-language → SQL using **Claude, ChatGPT, or Groq** with your own API key;\n  the model only *suggests* a read-only SELECT, never executes anything.\n\n### Toolkit\n- 25+ built-in **SQL \u0026 data-prep utilities** (IN-clause builder, CSV→SQL, bulk insert/update, deduplicate,\n  JWT inspector, hash/encoding, sample-data generator, and more) — all client-side.\n\n## 🚀 Run from source\n\nTwo processes: a **FastAPI** backend on `:8000` and a **Next.js** frontend on `:3000`.\n\n**Prerequisites:** Python 3.11+ and Node.js 20+.\n\n### 1. Backend\n\n```bash\ncd backend\npython3 -m venv .venv                     # first time only\n.venv/bin/pip install -r requirements.txt\n.venv/bin/uvicorn app.main:app --port 8000 --reload\n```\n\nAPI docs: \u003chttp://127.0.0.1:8000/docs\u003e\n\n\u003e Port 8000 busy? Run on another port and point the frontend at it:\n\u003e `BACKEND_URL=http://127.0.0.1:8010 npm run dev`\n\n### 2. Frontend\n\n```bash\ncd frontend\nnpm install                                # first time only\nnpm run dev\n```\n\nOpen \u003chttp://localhost:3000\u003e.\n\n### Build the desktop app\n\nSee [docs/DESKTOP.md](docs/DESKTOP.md) and [docs/BUILDING.md](docs/BUILDING.md). In short, the backend is frozen\ninto a self-contained sidecar (PyInstaller) and bundled by Tauri; CI does this for all platforms on every\nversion tag (`v*`) via [`.github/workflows/desktop.yml`](.github/workflows/desktop.yml).\n\n## 🧱 Tech stack\n\n| Layer | Tech |\n| --- | --- |\n| Frontend | Next.js (App Router), React, TypeScript, Tailwind, Zustand |\n| Desktop shell | Tauri (Rust) with the backend as a bundled sidecar |\n| Backend | FastAPI, SQLAlchemy, Pydantic |\n| Databases | MySQL (PyMySQL), PostgreSQL (psycopg), SQLite (imported dumps) |\n| Security | Fernet-encrypted secrets at rest, SSH tunnels (paramiko), bcrypt |\n\n## 📚 Documentation\n\n- [Building \u0026 packaging](docs/BUILDING.md)\n- [Desktop app notes](docs/DESKTOP.md)\n- [Product plan / spec](docs/PLAN.md)\n- [Roadmap](docs/ROADMAP.md)\n- [Contributing guide](CONTRIBUTING.md)\n- [Security policy](SECURITY.md)\n- [Changelog](CHANGELOG.md)\n\n## 🔒 Safety \u0026 privacy\n\n- Introspection and previews are **read-only**; writes go only to the table you explicitly select.\n- Every batch runs in a **transaction** — failed batches roll back and are logged.\n- Deterministic `uuid5` keys + upsert make re-runs **converge** (a 1200-row re-run produced zero duplicates).\n- Secrets (DB passwords, connection strings, SSH keys) are **Fernet-encrypted at rest** in `data/`\n  (`data/key.bin`, mode `0600`), never returned by the API, never logged. `data/` is git-ignored — keep it so.\n- Found a vulnerability? Please read [SECURITY.md](SECURITY.md) and report privately.\n\n## 🤝 Contributing\n\nContributions, issues, and feature requests are welcome! Star ⭐ the repo, fork it, and open a PR.\nStart with the [**Contributing guide**](CONTRIBUTING.md) and the [Code of Conduct](CODE_OF_CONDUCT.md).\n\n## 📝 License\n\n[MIT](LICENSE) © [Md. Golam Rabbani](https://github.com/md-golamrabbani)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmd-golamrabbani%2Fkeeldb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmd-golamrabbani%2Fkeeldb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmd-golamrabbani%2Fkeeldb/lists"}