Skip to content

Repository files navigation

PulseDB

Modern PostgreSQL Management Studio


MIT License GitHub Issues GitHub Stars Next.js 16 React 19 TypeScript 5 Docker

Built by elmoziml.com


PulseDB is a modern, open-source PostgreSQL management tool with a clean, powerful web interface. Manage databases, browse tables, run SQL queries, and visualize your schema — all from your browser with zero configuration.


 [Screenshot Coming Soon] 


✨ Features

🔍 Schema Browser

Tree view of schemas, tables, columns, indexes, constraints, and relations. Navigate your database structure effortlessly.

📊 Data Explorer

Browse, filter, search, sort, and paginate through table data with a responsive, spreadsheet-like interface.

✏️ Inline Editing

Edit cell values directly in the table view — click, type, and save. Changes are committed instantly.

⌨️ SQL Query Editor

Full-featured editor with syntax highlighting, code completion, query history, and multi-tab support powered by CodeMirror.

📋 Table DDL Viewer

View and copy CREATE TABLE statements for any table in your database.

📦 Import / Export

Import SQL files and export database schemas and data with a single click.

📈 Dashboard

Quick overview of database health, active connections, size, and server activity.

🔒 SSL Support

Connect with SSL-enabled PostgreSQL instances for secure remote connections.

🌙 Dark Mode

Built-in light/dark theme that respects your system preference.

🔐 Encrypted Credentials

Connection passwords encrypted at rest with AES-256-GCM encryption. Passwords never leave the server.

🐳 Docker Ready

One-command deployment with Docker Compose. Persistent volumes, auto-generated encryption keys.


🚀 Quick Start

Using Docker (recommended)

git clone https://github.com/elmoziml/pulsedb.git
cd pulsedb
docker compose up -d

Open http://localhost:5433 in your browser, create your first connection, and start exploring.

Without Docker

git clone https://github.com/elmoziml/pulsedb.git
cd pulsedb
npm install
npm run dev

Open http://localhost:3000 in your browser.


🐳 Docker

Docker Compose

services:
  pulsedb:
    build: .
    ports:
      - "5433:3000"
    volumes:
      - pulsedb-data:/data
    restart: always

volumes:
  pulsedb-data:

Port Configuration

The default port is 5433 (a nod to PostgreSQL's 5432). Change it in docker-compose.yml:

ports:
  - "8080:3000"  # change 8080 to any port you prefer

Volumes & Data

PulseDB stores encrypted connection configs and the encryption key in a Docker volume at /data:

/data
├── connections.json      # Encrypted connection configurations
└── encryption.key        # Auto-generated AES-256 key

Custom Encryption Key

The encryption key is generated automatically on first launch. To use your own:

services:
  pulsedb:
    environment:
      - ENCRYPTION_KEY=your-64-char-hex-key

⚙️ Configuration

Environment Variables

Variable Required Default Description
ENCRYPTION_KEY No Auto-generated 32-byte hex key for AES-256-GCM

Encryption Details

Connection passwords are encrypted at rest using AES-256-GCM:

  • Key derived via SHA-256 from ENCRYPTION_KEY or the auto-generated key
  • Unique random initialization vector (IV) per encryption
  • Passwords never sent to the frontend — API returns "••••••••"
  • Legacy plaintext passwords automatically migrated on read

🛠️ Development

Prerequisites

  • Node.js 20+
  • npm

Setup

npm install
npm run dev

Commands

Command Description
npm run dev Start development server
npm run build Build for production
npm start Start production server
npm run lint Run ESLint

Project Structure

src/
├── app/                    # Next.js App Router pages & API routes
│   ├── api/                # Backend API endpoints
│   └── connections/        # Connection management pages
├── components/             # React components
├── lib/                    # Utilities, store, crypto, database
└── types/                  # TypeScript type definitions

🧱 Tech Stack

Framework Next.js 16 (App Router)
UI Library React 19, Ant Design 6
Styling Tailwind CSS 4
Database PostgreSQL via pg
Code Editor CodeMirror with SQL language support
State Management Zustand
Encryption Node.js crypto (AES-256-GCM)
Font Inter via next/font
Language TypeScript 5 (strict mode)

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.


🛡️ Security

  • Encryption at rest — AES-256-GCM with random IV per connection
  • No password leaks — Passwords masked in API responses
  • Encryption key — Auto-generated or user-provided via ENCRYPTION_KEY
  • Local storage — Connections stored in a Docker volume, not in the database

See SECURITY.md for full details.


📄 License

MIT © elmoziml.com

About

PulseDB is a modern, open-source PostgreSQL management tool with a clean, powerful web interface. Manage databases, browse tables, run SQL queries, and visualize your schema — all from your browser with zero configuration.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages