Nodamin
A lightweight, zero-configuration database administration tool for managing MySQL, MariaDB, PostgreSQL, and SQLite from the browser.
Built with
β‘ Nodamin

Lightweight Database Admin for Node.js β A single-process Adminer alternative powered by Node.js and TypeScript.
Nodamin is a web-based database administration tool inspired by Adminer. Built with Node.js and TypeScript, it is compiled into a highly portable package that requires zero external configuration to run.
β¨ Features
- π Zero Configuration - Instantly run via
npxwith no setup required. - π Multiple SQL Database Support - MySQL, MariaDB, PostgreSQL, and SQLite.
- π¨ Simple & Clean UI - Toggle between Light and Dark themes.
- βοΈ Custom Host & Port - Configure binding ports and hosts via CLI or environment variables.
- π§ Full CRUD Operations - Insert, update, delete, truncate, and drop tables/rows.
- π SQL Query Editor - Execute raw SQL with an interactive result viewer.
- π Table Browser - Discover tables with pagination, sorting, and quick actions.
- π Database Explorer - Browse databases, tables, and structures easily.
- π¦ Export/Import - Export database/table to SQL dumps, or import existing SQL files.
- β Bulk Actions - Select multiple tables/rows for bulk operations.
- π SQL Safety Controls - Optional read-only sessions, query timeout/cancellation, and typed confirmations for destructive actions.
π Quick Start
The fastest and easiest way to use Nodamin is via npx (requires Node.js 20 or newer):
# Automatically download & run via npx
npx @dipras/nodamin
# Run with a custom port and host
npx @dipras/nodamin --port 8080 --host 127.0.0.1
Open your browser to the URL displayed in your terminal (default: http://localhost:3088) and connect to your MySQL, MariaDB, PostgreSQL, or SQLite database.
π οΈ Install from Source (Manual)
# Clone repository
git clone https://github.com/dipras/nodamin.git
cd nodamin
# Install dependencies
npm install
# Build the distribution file
npm run build
# Run
npm start
π Notes for SQLite:
- You can upload an existing
.dbfile directly via the UI. - Selecting the Create New option will provision a temporary In-Memory database (data is lost upon server restart). This is perfect for quick testing and prototyping.
- SQLite runs synchronously in-process, so live query timeout and cancellation are only available for MySQL, MariaDB, and PostgreSQL connections.
π Notes for PostgreSQL:
- Connect with the server fields or a
postgresql:///postgres://URL. Add?sslmode=requireto a URL, or select Use SSL/TLS, when the server requires TLS. - Table browsing and schema operations currently target the
publicschema.
Connection Safety
The connection form provides two optional safety controls:
- Read-only mode blocks CRUD, DDL, import, and mutating raw SQL. Uploaded SQLite databases are also opened with SQLite's native read-only flag.
- Query timeout sets the default limit for raw server-database queries. The SQL editor keeps running queries attached to a query ID and exposes a Cancel button that interrupts the active server query.
Dropping databases/tables, truncating tables, and deleting rows require typed confirmation. SQL imports stop on the first MySQL/MariaDB error; PostgreSQL imports run transactionally; SQLite imports use native script parsing and roll back the script on failure unless the script explicitly manages its own transaction.
π οΈ Configuration & CLI Variables
Nodamin can be configured using CLI arguments or Environment Variables:
| CLI Argument | Environment Variable | Default | Description |
|---|---|---|---|
--port <number> |
NODAMIN_PORT |
3088 |
Port for the web interface. |
--host <string> |
NODAMIN_HOST |
127.0.0.1 |
IP Address/Host to bind the server to. Use 0.0.0.0 only on a trusted network or behind authentication. |
Example using Environment Variables:
NODAMIN_HOST=127.0.0.1 NODAMIN_PORT=9000 npx @dipras/nodamin
π οΈ Development
# Type check
npm run typecheck
# Build single file (production)
npm run build
# Development mode with watch
npm run dev
Project Structure
src/
βββ index.ts # Entry point & CLI parser
βββ server.ts # HTTP server
βββ router.ts # Request router & body parser
βββ routes.ts # Route registration order only
βββ routes/ # Route handlers grouped by domain
βββ session.ts # In-memory session lifecycle
βββ types.ts # TypeScript type definitions
βββ db/
β βββ driver.ts # Shared database contract
β βββ index.ts # Per-session driver facade
β βββ mysql.ts # Shared MySQL/MariaDB protocol driver
β βββ postgresql.ts # PostgreSQL driver (public schema)
β βββ sqlite.ts # SQLite driver
βββ views/
βββ pages.ts # View-model and rendering
βββ templates/ # EJS source templates
βββ styles.css # Embedded stylesheet source
βββ scripts.js # Embedded browser behavior
π Current Database Features
- β Connect / Disconnect
- β List databases
- β Create / Drop database
- β List tables with metadata (engine, rows, size, collation)
- β View table structure (columns, types, keys, defaults)
- β Browse table data with pagination & sorting
- β Insert, Edit, Delete rows
- β Drop & Truncate tables
- β Raw SQL query editor with result display
- β Create table with GUI (column types, constraints)
- β Export table to SQL dump
- β Export entire database to SQL dump
- β Import SQL files
- β Bulk actions for tables (drop, truncate, export multiple)
- β Bulk delete for rows
- β Light/Dark theme toggle with localStorage persistence
- β Error handling with user-friendly messages
πΊοΈ Roadmap
Nodamin is focused on becoming a fast, reliable SQL database admin for local development and trusted environments. The roadmap prioritizes a strong daily SQL workflow before adding more database engines.
1. Reliability and SQL Safety
- Expand integration tests for CRUD, pagination, sorting, import, and export
- Add shared driver conformance tests for MySQL and SQLite
- Improve SQL import parsing for quoted delimiters, triggers, and procedures
- Add MySQL query timeout and cancellation controls
- Add an optional read-only mode for safer database inspection
- Improve destructive-action confirmations and import/error recovery
2. Daily Query Workflow
- Save and switch between multiple connections for the current session
- Connect with
mysql://,mariadb://,postgresql://, andpostgres://database URLs - Add query history, saved queries, and reusable snippets
- Add SQL autocomplete for schemas, tables, columns, and keywords
- Add keyboard shortcuts and a better query editor experience
- Export query results and table data to CSV and JSON
- Add table search and column-level data filters
- Add
EXPLAINand query-plan viewing
3. Schema Management
- Alter tables from the UI: add, modify, rename, and drop columns
- Create, inspect, and drop indexes and unique constraints
- Inspect and manage foreign keys
- Add an ERD viewer based on foreign-key relationships
- Browse and manage views
- Browse triggers, stored procedures, and functions where supported
4. SQL Database Drivers
- MySQL - Primary supported server database
- SQLite - File-based and in-memory database support
- PostgreSQL - Full shared-driver workflow and PostgreSQL metadata for the
publicschema - MariaDB - First-class connection type over the shared MySQL protocol driver
- Microsoft SQL Server - Later, after the shared SQL capabilities are stable
5. Administration and Deployment
- Inspect and manage database users, roles, and privileges where supported
- Add optional authentication for deployments outside localhost
- Add configurable session, cookie, proxy, and TLS security settings
- Add connection health, server information, and basic activity views
- Document safe localhost, trusted-network, and reverse-proxy deployment modes
π License
GPL-2.0 - Same as Adminer
π Credits
Inspired by Adminer by Jakub VrΓ‘na.
Built with Node.js, TypeScript, and β€οΈ