prisma-uml icon indicating copy to clipboard operation
prisma-uml copied to clipboard

A CLI to transform a Prisma schema to a PlantUML Entity RelationShip Diagram

Welcome to prisma-uml 👋

A CLI to transform a Prisma schema to a PlantUML Entity RelationShip Diagram

npm npm CircleCI (all branches)

  • Installation
  • Commands
    • prisma-uml <path> [options]
  • Image Rendering
    • Using the official PlantUML server online
    • Using a local server with Docker
  • Demo
  • Incoming changes
  • Authors
  • Show your support

Installation

Using npx

If you don't want to install the CLI but just execute it, you can use it through npx this way

npx prisma-uml --help

Install with npm

You can also install the CLI globally

npm i -g prisma-uml
prisma-uml --help

Commands

prisma-uml <path> [options]

Generate a plantUML from a Prisma schema

prisma-uml <path> [--output] [--server] [--file]

Argument

Name Description
path Path to Prisma schema.

Options

Name Alias Description Type / Choices Default
--output -o Output of the diagram string / [text | svg | png | jpg] text
--server -s PlantUML Server URL string https://www.plantuml.com/plantuml
--file -f Filename or File full path to output string
Examples

# Output a plantUML Entity Relation Diagram as text
prisma-uml ./schema.prisma

# Save the diagram into a .plantuml file
prisma-uml ./schema.prisma > my-erd.plantuml

# Output a diagram as SVG
prisma-uml ./schema.prisma --output svg --file my-erd.svg

# Output a diagram as PNG
prisma-uml ./schema.prisma -o png -f my-erd.png

#  Use a plantUML custom server to render the image
prisma-uml ./schema.prisma --server http://localhost:8080

Image Rendering

Using the official PlantUML server online

PlantUML usually requires to have Java installed or a server to render the images. By default the official online server (https://www.plantuml.com/plantuml) is used to render the images. The plantUML diagram is first compressed then encoded (plantUML encoding) and finally sent to the server to execute the rendering.

Using a local server with Docker

You might want to avoid sending your diagram over the wire for some reason, prisma-uml allows you to specify a custom/local server. You could easily run your own local server using Docker:

docker run -d -p 8080:8080 plantuml/plantuml-server:jetty

You server is now available (depending of you Docker installation) at http://localhost:8080. You can then use prisma-uml as follow:

prisma-uml ./schema.prisma --server http://localhost:8080

Demo

asciicast

Incoming changes

  • [ ] Feat: Split attributes by entity (scalar, enum, navigation fields / external type).
  • [ ] Feat: Group relations by entities.
  • [ ] Feat: NextJs Preview that run the CLI on server to render a prisma schema to a plantUML ERD ?
  • [ ] Feat: Display Version Number
  • [ ] Feat: Handle -o text -f my-erd.puml|.wsd|.plantuml...
  • [ ] Remove --output in favor of extension handling (.svg, .png, .jpg, .puml...) (?)
  • [ ] Fix: Multiple cardinalities when should be online one (see simple example)
  • [ ] Feat: Add logging to stdout to describe what the CLI is doing

Authors

👤 Brendan Stromberger

👤 Yann Renaudin

Show your support

Give a ⭐️ if this project helped you!