DEV Community

Cover image for An open-source database IDE that feels like DataGrip
tranphucbol
tranphucbol

Posted on

An open-source database IDE that feels like DataGrip

My DataGrip license ran out and I didn't renew it. I loved the UI. But it's a Java app, it ate a lot of RAM, and it froze a lot.

I tried the alternatives first. Beekeeper Studio keeps too much behind the paywall (even a basic JSON view of a cell is paid), and to reach another database you switch the connection instead of keeping several open in one window like DataGrip. TablePro is native, but the UI felt hard to use, and it fires queries I never asked for, like collecting database sizes. When you're connected to production, that makes you nervous.

None of them came close to DataGrip's UI/UX. My colleagues and I started building our own.

What TableCraft is

TableCraft is a desktop database IDE shaped like DataGrip: the same layout and keymap (double Shift opens Search Everywhere), with SQL consoles and a table editor. SQLite and MySQL/MariaDB/TiDB come in the box. PostgreSQL, Oracle, SQL Server, Redis, etcd and DuckDB download as plugins when you add one. You can import your connections straight from DataGrip.

We started with the DataGrip features we use every day, then kept fixing whatever annoyed us while using it at work. People at my company use it on production databases now.

It's written in TypeScript, because that's the language I know well enough to judge every line an agent writes. Each datasource gets its own engine process, and result rows stay in that process while the grid only reads the window you're looking at. A crashing driver takes down one datasource, not the app.

Agents, with rules around them

Most of the code was written by coding agents. My first commit landed on October 22, and there are 728 commits now. What keeps the quality up is the setup I built around them. Every pull request runs end-to-end tests under Playwright and comes with screenshots as evidence. Every decision between us and the agent goes into a file in docs/decisions/ (more than 140 of them), and the agent reads those while it plans and implements.

Letting agents query your databases

TableCraft also runs an MCP server, so Claude Code, OpenCode or Cursor can list schemas and run queries through it. Every datasource starts Off for agents. You can raise it to Read only, which runs on a read-only session, or to Ask before writes, where each write waits for you to click Allow. A pop-up while you type would steal keystrokes, so a waiting write only turns a status bar chip amber. A datasource coloured red (our production colour) can only go past Read only on its own settings page, so it never happens by a slip in a long list.

OpenCode in a terminal beside TableCraft, asking before it writes

What copying DataGrip taught me

You don't notice how careful JetBrains is until you try to copy them. How each component moves and where each button sits turned out to be deliberate. My first build had no history button on the console toolbar. I only noticed when I reached for it.

A bigger example is the Database pane. My first tree sorted connections by name, because that's the obvious thing. DataGrip keeps the order you arrange by dragging, with folders above connections. That sounds minor until you have dozens of connections and want production at the top, grouped by how much they matter to you instead of alphabetically.

Expanding works the same careful way. The tree introspects one schema when you open it, never the whole server on connect. That's exactly what made me nervous about TablePro: on a production server with hundreds of schemas, I don't want my IDE running queries I didn't ask for.

Two things we got wrong

The plugin interface was designed on day one for SQL databases. When we started on the flow for key-value stores like Redis and etcd, it didn't fit, and I had to change the plugin API to a 2.0.

The second one is a bit embarrassing. We never audited how many processes each plugin started. In one of my regular performance checks I saw TableCraft starting an engine for every installed plugin at launch, whether you used it or not.

Try it

It's MIT licensed, with builds for macOS (Apple silicon and Intel), Windows and Linux. The macOS app isn't signed yet, and the install guide shows how to open it.

If you use DataGrip, or used to, I'd really like you to try it and file an issue for whatever feels off: https://github.com/tranphucbol/table-craft

Top comments (0)