DB Mover gives you a visual interface to copy, back up, or browse your databases. Instead of remembering pg_dump flags or mongodump arguments, you paste your connection strings, hit run, and watch live logs confirm every step. No terminal, no docs rabbit hole, just a straightforward tool that moves data from A to B.
flowchart LR
Client["Web Client (React)"]
Server["Hono API Server"]
Adapters["Database Adapters"]
MongoDB[("MongoDB")]
PostgreSQL[("PostgreSQL")]
MySQL[("MySQL")]
Redis[("Redis")]
Firebase[("Firebase")]
Client --> Server
Server --> Adapters
Adapters --> MongoDB
Adapters --> PostgreSQL
Adapters --> MySQL
Adapters --> Redis
Adapters --> Firebase
style Client fill:#1e1b4b,stroke:#6366f1,stroke-width:2px,color:#fff
style Server fill:#2e1065,stroke:#8b5cf6,stroke-width:2px,color:#fff
style Adapters fill:#2e1065,stroke:#8b5cf6,stroke-width:2px,color:#fff
style MongoDB fill:#022c22,stroke:#10b981,stroke-width:2px,color:#fff
style PostgreSQL fill:#0f172a,stroke:#3b82f6,stroke-width:2px,color:#fff
style MySQL fill:#0f172a,stroke:#3b82f6,stroke-width:2px,color:#fff
style Redis fill:#4c0519,stroke:#ef4444,stroke-width:2px,color:#fff
style Firebase fill:#451a03,stroke:#f59e0b,stroke-width:2px,color:#fff
Move data between two databases of the same engine. The UI guides you through pasting both URIs, then handles the dump, transfer, and restore while streaming live progress.
sequenceDiagram
actor User
participant Client as Web App
participant Server as Hono API
participant Migration as Migration Service
participant SourceDB as Source Database
participant TargetDB as Target Database
User->>Client: Enter source & target URIs
Client->>Server: Start copy migration
Server->>Migration: Create job
Migration->>SourceDB: Connect & read data
Migration->>TargetDB: Insert records
loop While data remains
Migration->>Server: Update progress & logs (SSE)
Server->>Client: Stream status
Client->>User: Show live logs
end
Migration->>Server: Mark job completed
Server->>Client: Completion notification
Client->>User: Display success
Grab a compressed zip of your entire database with one click. The app streams the file directly to your browser, no intermediate storage needed.
sequenceDiagram
actor User
participant Client as Web App
participant Server as Hono API
participant Adapter as DB Adapter
participant SourceDB as Source Database
User->>Client: Request backup download
Client->>Server: POST /download
Server->>Adapter: Run download
Adapter->>SourceDB: Dump all data
Adapter->>Server: Pipe zip archive
Server->>Client: Stream ZIP file
Client->>User: Browser download prompt
Explore your database schema and preview up to 100 rows per table or collection, right in the browser. Read‑only by design; no accidental writes.
sequenceDiagram
actor User
participant Client as Web App
participant Server as Hono API
participant Browser as Browser Service
participant DB as Connected Database
User->>Client: Select Browse mode
Client->>Server: Request schema
Server->>Browser: List objects
Browser->>DB: Fetch collections/tables
DB->>Browser: Object list
Browser->>Server: Return objects
Server->>Client: Display schema tree
User->>Client: Click a table/collection
Client->>Server: Preview object data
Server->>Browser: Query preview
Browser->>DB: Paginated data
DB->>Browser: Rows
Browser->>Server: Preview result
Server->>Client: Show data grid
Same clean workflow for MongoDB, PostgreSQL, MySQL, Redis, and Firebase (Realtime Database & Firestore). The UI adapts to what each engine expects.
Real‑time progress bar, streaming logs with timestamps, and key stats like collections processed and documents moved. When it finishes, confetti confirms success.
Connection strings and service‑account keys stay in your browser’s session storage and are cleared when you close the tab.
- Clone the repository:
git clone https://github.com/samueltuoyo15/db-mover.git
- Install dependencies (root, client, and server):
cd db-mover npm run install:all - Start the development servers:
This runs both the Vite frontend (on port 5173, proxying API to 3000) and the Hono backend (on port 3000).
npm run dev
To run in production, build the client (npm run build --workspace=client), build the server (npm run build --workspace=server), then start the server with node server/dist/index.js. The built client assets will be served from the public folder.
- Visit the landing page and click Launch App.
- Pick your database engine (MongoDB, PostgreSQL, MySQL, Redis, or Firebase).
- Choose a mode: Copy (source → target), Download (backup zip), or Browse (explore data).
- Paste your connection strings. For Firebase, you’ll also upload a service‑account JSON.
- Click Start migration, Download backup, or Open Data Browser.
- For copy jobs, you’ll be taken to a live dashboard that shows progress, logs, and final stats.
- For downloads, a zip file will begin downloading immediately.
- The browser mode lets you expand a schema tree, click any table/collection, and inspect rows with a built‑in JSON viewer.
| Technology | Link |
|---|---|
| TypeScript | typescriptlang.org |
| React 18 | react.dev |
| Vite | vitejs.dev |
| Tailwind CSS | tailwindcss.com |
| Hono | hono.dev |
| MongoDB driver | mongodb.com |
| pg (PostgreSQL) | node-postgres.com |
| mysql2 | github.com/sidorares/node-mysql2 |
| ioredis | github.com/redis/ioredis |
| Firebase Admin | firebase.google.com |
| Framer Motion | framer.com/motion |
| Recharts | recharts.org |
| Archiver | archiverjs.com |
Quickly spin up the mover using Docker:
docker build -t db-mover .
docker run -p 3000:3000 db-moverThis project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0).
We welcome contributions! Whether it's adding a new database adapter or improving the UI, please see our CONTRIBUTING.md.
Joseph
