Back

2026

Under development

NoVacDB Studio

Desktop SQL client for NoVacDB and PostgreSQL · built by Vikrant Kumar

A lightweight Windows desktop SQL client for NoVacDB that also works with any PostgreSQL server.

GoWailsTypeScriptCodeMirrorPostgreSQL wire protocolWindows

The problem

NoVacDB speaks the PostgreSQL protocol, so psql and pgAdmin already connect to it. But psql is a terminal tool, and pgAdmin is a heavy web app built around PostgreSQL's own catalogs, which NoVacDB doesn't have yet. I wanted a small native app a Windows user can download and open in seconds: connect, write SQL, see results and errors clearly, and nothing that pretends the server can do more than it can.

Decisions and why

Wails instead of Electron

Wails uses the WebView2 runtime already on Windows instead of shipping a whole Chromium, so the app is a fraction of Electron's size and memory. The backend is Go, the same language as NoVacDB, so the protocol code and the database code read the same way.

Speak the PostgreSQL protocol, nothing custom

Studio talks to the server exactly like psql does. That means it works with real PostgreSQL too, and every bug it finds in NoVacDB is a real protocol bug, not something a private API is hiding.

Cancel that actually stops the query

A Cancel button that only stops waiting leaves the server busy. Studio sends a PostgreSQL CancelRequest on a separate connection with the session's secret key, so the server stops the statement and the UI never freezes while a query runs.

Passwords in Windows Credential Manager, never in a file

Saved connections keep host, port, user and database in settings, but the password goes to the operating system's credential store. Untick 'Remember password' and Studio asks every time.

Features follow the server

No schema browser, transaction buttons or query-plan viewer until NoVacDB supports catalog queries, BEGIN/COMMIT over the wire and EXPLAIN. The UI shows what really works, and each feature lands when the database step behind it does.

The hardest part

Making large results and errors feel instant without lying about them. The results grid is virtualised, so 100,000 rows scroll smoothly, and copying cells pastes straight into Excel. Errors show every field the server sends (severity, SQLSTATE code, DETAIL and HINT) and highlight the position in the editor, because NoVacDB's errors are written to be useful and hiding half of them wastes that. I tested it against a real NoVacDB server running in WSL: inserting 100,000 rows in batches, selecting them all, cancelling a long query, killing the server mid-query and reconnecting, and checking every error field on a duplicate-key violation.