npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@intranefr/adminer-node

v1.3.2

Published

Database management UI for MySQL, MariaDB, PostgreSQL and SQLite — runnable via npx

Readme

adminer-node

A lightweight database management UI for MySQL, MariaDB, PostgreSQL and SQLite — inspired by AdminerEvo, built with Node.js, Vue 3, Tailwind CSS and DaisyUI.

Developed by intrane.fr (Javier Leandro Arancibia).

Quick Start

npx adminer-node

Opens your browser at http://127.0.0.1:8080 automatically.

Options

Usage:
  npx adminer-node [options]

Options:
  --port <port>      HTTP port to listen on (default: 8080)
  --host <host>      Host to bind to (default: 127.0.0.1)
  --no-open          Do not open browser automatically
  --driver <driver>  Pre-select driver: mysql | pgsql | sqlite
  --help             Show this help message

Features

  • MySQL / MariaDB — browse databases, tables, run SQL, edit rows, manage indexes & foreign keys, export dumps
  • PostgreSQL — full schema support, sequences, materialized views
  • SQLite — file-based and in-memory databases
  • SQL Editor — multi-statement execution with result tables
  • Table browser — sortable, filterable, paginated rows with inline edit
  • Row editor — insert / update / delete with type-aware inputs
  • Schema viewer — column types, indexes, foreign keys
  • Export — SQL dump per table or entire database
  • Security — AES-256-GCM encrypted session passwords, CSRF protection, brute-force rate limiting

Tech Stack

| Layer | Technology | |---|---| | Server | Node.js built-in http (zero framework) | | Frontend | Vue 3 (CDN, no build step) | | Styling | Tailwind CSS + DaisyUI (CDN) | | MySQL/MariaDB | mysql2 | | PostgreSQL | pg | | SQLite | better-sqlite3 |

Docker

Run with Docker

docker run -p 8080:8080 javimosch/adminer-node:latest

Then open http://localhost:8080 in your browser.

Docker Compose

Save as compose.yml and run docker compose up:

services:
  adminer-node:
    image: javimosch/adminer-node:latest
    ports:
      - "8080:8080"
    environment:
      - PORT=8080
      - HOST=0.0.0.0
    restart: unless-stopped

Or clone the repo and use the included compose.yml:

git clone https://github.com/javimosch/adminer-node.git
cd adminer-node
docker compose up

Build & Push (maintainers)

npm run deploy        # build + push to javimosch/adminer-node:latest
npm run docker:build  # build only
npm run docker:push   # push only
npm run docker:run    # quick local run

Configuration & Saved Connections

Create ~/.config/adminer-node/config.json (auto-loaded on startup):

{
  "port": 8080,
  "connections": [
    {
      "id": "local-mysql",
      "label": "Local MySQL",
      "driver": "mysql",
      "server": "127.0.0.1",
      "username": "root",
      "password": "secret",
      "db": "mydb"
    },
    {
      "id": "dev-sqlite",
      "label": "Dev SQLite",
      "driver": "sqlite",
      "server": "/tmp/dev.db",
      "username": "",
      "password": ""
    }
  ]
}

Saved connections appear as one-click cards on the home screen — the password never leaves the server.

Or pass via environment variable (JSON array):

ADMINER_CONNECTIONS='[{"label":"Local MySQL","driver":"mysql","server":"127.0.0.1","username":"root","password":"secret","db":"mydb"}]' \
  npx adminer-node

Or with a custom config file path:

npx adminer-node --config /path/to/my-config.json

See config.example.json in this repo for a full reference.

HTTP Basic Auth

Protect a publicly-exposed adminer-node instance with HTTP Basic Auth:

Via config file:

{
  "basicAuth": { "username": "admin", "password": "changeme" }
}

Via environment variables:

ADMINER_BASIC_USER=admin ADMINER_BASIC_PASS=changeme npx adminer-node

Note: Basic Auth is intended as a secondary layer — your primary protection is the DB login form. Enable it when deploying adminer-node on a public URL (e.g., behind a reverse proxy).

Docker — Advanced: Pre-configured connections

Mount your config file or pass connections via environment:

services:
  adminer-node:
    image: javimosch/adminer-node:latest
    ports:
      - "8080:8080"
    environment:
      HOST: 0.0.0.0
      # Optional: basic auth for public URL protection
      ADMINER_BASIC_USER: admin
      ADMINER_BASIC_PASS: changeme
      # Pre-configure connections (JSON array)
      ADMINER_CONNECTIONS: |
        [{"label":"App DB","driver":"mysql","server":"mariadb","username":"root","password":"secret","db":"myapp"}]
    depends_on:
      - mariadb

  mariadb:
    image: mariadb:11
    environment:
      MARIADB_ROOT_PASSWORD: secret
      MARIADB_DATABASE: myapp

Or mount a config file:

services:
  adminer-node:
    image: javimosch/adminer-node:latest
    ports:
      - "8080:8080"
    environment:
      HOST: 0.0.0.0
      ADMINER_CONFIG: /config/adminer-node.json
    volumes:
      - ./adminer-node.json:/config/adminer-node.json:ro

Development

git clone https://github.com/javimosch/adminer-node.git
cd adminer-node
npm install
npm run dev           # starts with --watch

Requirements

  • Node.js >= 18

License

Apache-2.0 © Javier Leandro Arancibiaintrane.fr