Skip to content

minuth/open-migration

Repository files navigation

Open Migration

A centralized control plane for your database migrations. Secure, multi-engine, and modern.


📖 The Story

Managing database migrations across disparate environments—staging, production, or customer-specific database instances—often leads to fragmented workflows and manual friction. Open Migration is a framework-agnostic, centralized tool born out of the need for a unified source of truth.

It provides a high-density interface to manage, track, and execute schema changes across multiple database engines—regardless of the application's underlying framework—from a single, secure control plane. No more context switching or fragmented logs; just one platform for all your migrations.

✨ Key Features

  • 🚀 Centralized Dashboard: A single overview of all your connected databases and their migration statuses.
  • 🔧 Multi-Engine Support: Native support for executing migrations on SQLite, PostgreSQL, and MySQL.
  • 📦 SCM Integration: Fetch migration files directly from GitHub or GitLab using secure, encrypted personal access tokens.
  • 🔐 Secure by Design: Master password authentication and encrypted storage for all database and API secrets.
  • 🎨 Premium UI: A modern, dark-mode first interface built with Nuxt UI and Tailwind CSS v4, featuring glassmorphism and smooth micro-animations.
  • 🕒 Activity Tracking: Detailed audit logs of migration executions and health checks for all connections.

📸 Interface

Dashboard Central

The high-density dashboard provides a status of all your database, and recent execution history.

Dashboard Preview

Multi-Engine Management

Manage SQLite, PostgreSQL, and MySQL connections seamlessly with a unified interface designed for efficiency.

Databases View

Secure Configuration

Link your GitHub or GitLab repositories with encrypted tokens and configure migration paths with instant connection feedback.

Add Database

Migration Auditing

Drill down into specific database instances to view full execution history, logs, and pending schema shifts.

Database Details

🛠 Technology Stack

🚦 Getting Started

Prerequisites

  • Node.js: > 18.x
  • Internal Database: SQLite (bundled)

Setup

  1. Clone the repository:

    git clone [repository-url]
    cd open-migration
  2. Configure environment variables: Copy the example and fill in the secrets:

    cp .env.example .env

    Note: See Generating Secrets for details on setting up secure environment variables.

  3. Install dependencies:

    pnpm install
  4. Initialize the application database:

    pnpm run migrate:up
  5. Start the development server:

    pnpm run dev

🐳 Docker Deployment

For production-ready deployments, we provide a Docker configuration that bundles the environment and persists data.

Using Docker Compose

  1. Prepare your .env: Ensure .env exists with ENCRYPTION_SECRET and SESSION_PASSWORD correctly set. (See Generating Secrets)

  2. Spin up the container:

    docker compose up -d --build
  3. Initialization: The application handles internal database migrations automatically on startup. No extra commands are typically required.

The application will be available at http://localhost:3000.

Environment Requirements

Variable Description Requirement
ENCRYPTION_SECRET Used to encrypt SCM tokens and DB credentials Min 32 chars
SESSION_PASSWORD Used for admin session signing Min 32 chars
DATABASE_PATH Path to the SQLite storage file ./.data/sqlite.db

🔑 Generating Secrets

Both ENCRYPTION_SECRET and SESSION_PASSWORD MUST be at least 32 characters long. You can generate secure secrets using either Node.js or OpenSSL:

Option 1: Node.js

node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"

Option 2: OpenSSL (Shell)

openssl rand -base64 32

🔓 First Access

On the first launch (either via Docker or Local), follow the setup wizard to create your Master Password. This will be used to encrypt all sensitive data.


Built with ❤️ for the Engineering Community

About

A centralized, multi-engine database migration control plane

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Generated from nuxt-ui-templates/starter