
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
quick-erd
Advanced tools
quick and easy text-based ERD + code generator for migration, query, typescript types and orm entity
quick and easy text-based ERD editor with drag and drop visualization + code generator for migration, query, typescript types and orm entity

Hosted Web UI: https://quick-erd.surge.sh
Run locally (with access to local erd.txt file):
npm i -D quick-erd
npx erd-ui --open
The --open flag is optional, it will automatically open the web UI in default browser.
generate incremental migration:
auto-migrate
generate typescript types of each table:
erd-to-types
generate each table types and better-sqlite3-proxy schema:
erd-to-proxy
generate java jpa entities and repositories:
erd-to-spring
generate initial schema:
erd-to-sqlite, erd-to-knex
reverse-engineer erd text:
pg-to-erd, mysql-to-erd, mssql-to-erd, sqlite-to-erd
format erd text:
format-erd
open web ui:
erd-ui
Option 1: Run it online
Hosted on https://erd.surge.sh and https://quick-erd.surge.sh
Option 2: Run it locally
npm installnpm startInstall this package as devDependency, run npm i -D quick-erd
Setup database connection credential in .env.
.env is not needed for sqlite
You can refer to .env.example
Below are available commands in example.
If you prefer to use PowerShell, you may need to replace < with \< to pipe file content as stdin.
To reverse-engineer erd file from live database:
npx pg-to-erd > erd.txtnpx mysql-to-erd > erd.txtnpx mssql-to-erd > erd.txtnpx sqlite-to-erd dev.sqlite3 > erd.txtTo generate initial database migration script from erd file:
npx erd-to-knex pg < erd.txt > migrations/001-create-tables.tsnpx erd-to-sqlite < erd.txt > migrations/001-create-tables.sqlTo generate incremental database migration script from erd file and live database:
npx auto-migrate pg < erd.txtnpx auto-migrate mysql < erd.txtnpx auto-migrate mssql < erd.txtnpx auto-migrate dev.sqlite3 < erd.txtnpx auto-migrate --rename pg < erd.txtTo generate typescript types of each table:
npx erd-to-types < erd.txt > types.tsTo generate types and proxy schema for better-sqlite3-proxy:
npx erd-to-proxy < erd.txt > proxy.tsnpx erd-to-proxy --factory < erd.txt > proxy.tsTo generate java jpa entities and repositories:
npx erd-to-spring pg < erd.txtnpx erd-to-spring h2 < erd.txtTo format erd file:
npx format-erd erd.txtnpx format-erd --ref ordered_erd.txt new_erd.txtTo update erd file from live database:
npx pg-to-erd > erd.tmp
npx format-erd -r erd.txt erd.tmp
meld erd.txt erd.tmp
rm erd.tmp
To open web ui with disk file access:
npx erd-ui --opennpx erd-ui -p 8520 erd.txt --no-openFor Postgresql schema: Run pg-to-erd
For Mysql/MariaDB schema: Run mysql-to-erd
For MSSQL (Microsoft SQL Server) schema: Run mssql-to-erd
For Sqlite schema: Run sqlite-to-erd SQLITE_FILENAME
You can save the output into a file using pipe. e.g. by running: pg-to-erd > erd.txt
You can export the erd.txt to a database migration script. This process is also called forward-engineering for database schema.
Supported schema format includes: knex and better-sqlite3-helper
erd-to-knex pg < erd.txt > migrate.tsYou need to specify the db_client. e.g. pg, mysql, mssql, or sqlite
You can save the erd text into a file, then load it as stdin. e.g. erd-to-knex pg < erd.txt
Also, you can save the result into a knex migration script. e.g.
# create migrations directory if not exist
mkdir -p migrations
# read from erd.txt, save to migrations/YYYYmmddHHMMSS-create-tables.ts
erd-to-knex pg < erd.txt > migrations/$(date +"%Y%m%d%H%M%S")-create-tables.ts
erd-to-sqlite < erd.txt > migrate.sqlDepending on your migration directory (default is ./migrations/), you may save the migration script in corresponding directory. e.g.
# create migrations directory if not exist
mkdir -p migrations
# read from erd.txt, save to migrations/000-create-tables.sql
erd-to-sqlite < erd.txt > migrations/000-create-tables.sql
Run npx auto-migrate dev.sqlite3 < erd.txt
or npx auto-migrate mysql < erd.txt
or npx auto-migrate mssql < erd.txt
or npx auto-migrate pg < erd.txt
or npx auto-migrate --rename pg < erd.txt
This command auto setup knex and npm scripts, then it generates incremental migration script for knex.
For sqlite database, it also auto setup db.ts with better-sqlite3 connection using given database filename.
The --rename or -r flag enable table/column rename detection.
If there are pending knex migrations not applied, it will show error message and stop running.
npx erd-to-types < erd.txt > types.tsThis command generates the the typescript types of each table.
The relation fields are also included based on the foreign key references.
npx erd-to-proxy < erd.txt > proxy.tsThis command generates the typescript types of each table and the schema for proxySchema() in better-sqlite3-proxy
The relation fields are also included based on the foreign key references.
Additional arguments:
export format:
--factory--singleton (default)import format:
--commonjs or --cjs (default)--module or --esmExport Format:
The default behavior is to generate a proxy as singleton with commonjs format.
If a factory function is preferred, you can pass --factory in the argument, e.g. npx erd-to-proxy --factory < erd.txt > proxy.ts
Import Format:
In commonjs mode, the import path of local typescript files should not include .js extension;
In esm module, the import path of local files should include .js extension.
In the generated proxy file, it needs to import the local file db.ts. This tool will try to read the type field in package.json to determine the import format, and fallback to use "commonjs" format if undetermined.
If esm format is preferred but undetected, you can pass --esm in the argument, e.g. npx erd-to-proxy --esm < erd.txt > proxy.ts
To "prettify" the erd, run: format-erd erd.txt
To sort the tables and fields of exported erd according to previous version of erd, run:
format-erd --ref old_erd.txt new_erd.txt
The original text file will be backup with suffix, e.g. 'erd.txt.bk_20220212144828'
The formatted erd text will be saved in-place.
Warning: Comments are not preserved in the current version. If you want to restore the comments, you may use diff tools like meld to compare the formatted version and original version.
to support composite primary keys
to support composite unique keys
update "auto place" algorithm to avoid relationship lines overlap the tables visually
This project is licensed with BSD-2-Clause
This is free, libre, and open-source software. It comes down to four essential freedoms [ref]:
FAQs
quick and easy text-based ERD + code generator for migration, query, typescript types and orm entity
The npm package quick-erd receives a total of 215 weekly downloads. As such, quick-erd popularity was classified as not popular.
We found that quick-erd demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.