navoro

command module
v1.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2026 License: AGPL-3.0 Imports: 17 Imported by: 0

README

navoro

License Go React Wails Platform

A multi-engine database explorer with a React UI, running either as its own standalone desktop app (Wails3) or embedded inside condui as a private git submodule at ssh-gui/backend/dbexplorer.

Modes

  • Standalone — its own Wails3 desktop app, own encrypted connection vault, own SSH tunnel handling. Runs independently of condui.
  • Embedded in condui — opened as a satellite window from an existing condui SSH session. Connections are proxied through that session's tunnel instead of navoro's own vault; the UI is served from the same local HTTP port, with session/type/port/path injected into the page at render time.

Both modes share the same backend (core/) and the same React frontend (core/frontend/) — the UI detects which mode it's in and adjusts (e.g. hides the connection vault when embedded).

Supported database engines

Relational (SQL)

Engine SSH tunnel Notes
PostgreSQL also covers TimescaleDB and CockroachDB (Postgres wire protocol)
MySQL / MariaDB
SQL Server / Azure SQL
SQLite local file, synced over SFTP when the file lives on a remote host
Oracle connects by service name; go-ora has no dialer hook
ClickHouse
Snowflake cloud/HTTPS only
Firebird connects by database file path; no dialer hook
QuestDB rides the PostgreSQL driver (Postgres wire protocol)
InfluxDB 3.x real SQL over HTTP (Apache DataFusion)

Query-language-agnostic (non-SQL text queries)

Engine SSH tunnel Query language
Cassandra CQL
Neo4j Cypher, with a live graph visualization (see below)
InfluxDB 2.x Flux

Key-value / document

Engine SSH tunnel Notes
Redis per-DB-index browsing, type-aware value display (string/list/hash/set/zset)
Elasticsearch indices as "databases", documents as keys
MongoDB compound collection/docId keys, full document JSON editing

Every engine is a self-contained adapter behind a Driver (relational/text-query) or KVDriver (key-value) interface (core/driver.go, core/kvdriver.go) — adding a new engine is one new file plus one init() registration, with no changes needed anywhere else in the backend.

Features

  • Schema browsing — connection → database → (schema, when the engine has one worth showing) → table tree, with real introspection: columns, indexes, and foreign keys pulled from each engine's own system catalogs/data dictionary (information_schema, pg_catalog, all_* Oracle views, rdb$* Firebird system tables, system_schema Cassandra, etc.), not placeholders.
  • Query editor — multi-tab SQL/CQL/Cypher/Flux editor (CodeMirror 6: syntax highlighting + schema-aware autocomplete) with a results grid, execution timing, and an error panel.
  • Editable results grid — opening a table from the tree lets you edit cells, add, and delete rows inline (generates the UPDATE/INSERT/DELETE for you), as long as the table has a detected primary key.
  • Export / import — export any result set as CSV or JSON; import a CSV file into an existing table with column mapping and a preview.
  • Full-schema ER diagram — every table in the active database as a draggable node-link diagram connected by its foreign keys (in addition to the per-table mini-ER in the Details panel).
  • Backup / Restore — logical .sql dump (best-effort CREATE TABLE + INSERT) and restore, portable across connection modes since it runs through the same query engine as everything else.
  • Structure sync — compare a database's tables/columns against another saved connection and generate an ALTER/CREATE script to bring the target in line.
  • Graph visualization for Neo4j — query results that carry nodes/relationships (including inside collect(), paths, or nested maps) render as an interactive node-link graph alongside the flattened table: drag nodes, pan, zoom, click a node to inspect its full properties. Falls back to the plain results table for everything else.
  • Key-value browser — for Redis/Elasticsearch/MongoDB, a dedicated key list + value panel replaces the relational tree, with type/TTL display and inline value editing.
  • SSH tunneling — any engine with a dialer hook in its Go driver (see table above) can be reached through an SSH tunnel, sharing the same tunnel abstraction (core.DialFunc/ConnParams.Dial) across every engine — password or private-key SSH auth.
  • Encrypted connection vault (standalone mode) — connections are stored locally, encrypted with Argon2id + AES-256-GCM under a master password (vault/crypto.go, vault/store.go); nothing is stored in plaintext.
  • Light/dark theme — navoro brand palette (core/frontend/src/theme.css), togglable and persisted.
  • SQLite over SFTP — when a SQLite database lives on the remote host of a condui SSH session, navoro syncs the file locally, runs queries against the local copy, and syncs writes back.

See docs/roadmap.md for the feature roadmap and scope notes on what's implemented vs. planned.

Architecture

core/           connection manager, per-engine drivers, HTML/asset embedding
  driver.go       Driver interface + registry (relational / text-query engines)
  kvdriver.go     KVDriver interface + registry (key-value engines)
  manager.go      Manager: connection lifecycle, NormalizeDbType (alias → driver name)
  <engine>.go     one file per engine, self-registering via init()
  frontend/       React + Vite UI (embedded into the Go binary via go:embed for release builds)
vault/          standalone-mode encrypted connection store
sshtunnel/      SSH tunnel dialing, shared by every tunnel-capable driver
app*.go         standalone Wails3 app: vault, connections, queries
httpserver.go   local HTTP server backing both the standalone window and condui's satellite window
main.go         Wails3 entrypoint (standalone mode)

Building

Standalone:

cd core/frontend && npm install && npm run build   # produces core/frontend/dist, embedded via go:embed
cd ../.. && go build .                              # or: task build
wails3 dev                                          # dev mode with Vite hot reload

Embedded in condui (from the ssh-gui module, as a submodule):

go work init . ./backend/dbexplorer   # link the submodule for the tagged build
go build -tags dbmanager .

condui's default (open-source) build excludes navoro entirely — go build . without the dbmanager tag compiles against a stub that reports the feature as unavailable, so the private submodule is never required to build the OSS product.

Brand

navoro icon navoro icon, monochrome

  • Icon — the isotype: a stroke "N" with three teal dots stacked to its right, inside a navy circle (docs/brand/navoro-icon.svg).
  • Monochrome — the same mark in solid white with no circle, for placement on surfaces that aren't the app's own navy (docs/brand/navoro-icon-mono.svg).
  • Lockup — icon + wordmark, used in the sidebar (core/frontend/src/components/Logo.jsx) and above.
  • Palette — marino profundo #12233F, marino medio #1B3563, turquesa #1BA89C, turquesa claro #4FC7BC, turquesa oscuro #0E766D, plus the neutral/functional scale defined in core/frontend/src/theme.css.
  • Type — Poppins (brand/titles, 500/600/700), Inter (UI text), JetBrains Mono (data/code).

Full brand manual: Design navoro.pdf.

Status

The standalone desktop app (this repo) is released independently — see Releasing for how tagged builds ship for Windows, macOS and Linux with an in-app updater. It's also still embedded inside condui as a submodule, sharing the same core/ backend and React frontend in both modes.

License

navoro is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) — see LICENSE.

Commercial licensing may be available separately.

Trademark

The navoro name, logo and visual identity are not included under the software license.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
build
ios command
Package sshtunnel is navoro's own minimal SSH client/tunnel builder for standalone mode, adapted from condui/ssh-gui's app_terminal.go (buildSSHConfig + createSSHClientWithJump) so navoro doesn't depend on ssh-gui's session manager.
Package sshtunnel is navoro's own minimal SSH client/tunnel builder for standalone mode, adapted from condui/ssh-gui's app_terminal.go (buildSSHConfig + createSSHClientWithJump) so navoro doesn't depend on ssh-gui's session manager.
Package vault provides the same Argon2id + AES-256-GCM local vault scheme condui/ssh-gui uses for its connection vault (ported from ssh-gui/backend/account/crypto.go), so navoro's standalone connection store can be encrypted the same way without depending on ssh-gui.
Package vault provides the same Argon2id + AES-256-GCM local vault scheme condui/ssh-gui uses for its connection vault (ported from ssh-gui/backend/account/crypto.go), so navoro's standalone connection store can be encrypted the same way without depending on ssh-gui.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL