https://github.com/fuelen/ecto_erd
A mix task for generating Entity Relationship Diagram from Ecto schemas available in your project.
https://github.com/fuelen/ecto_erd
dbml ecto elixir erd graphviz mermaid plantuml uml
Last synced: 2 days ago
JSON representation
A mix task for generating Entity Relationship Diagram from Ecto schemas available in your project.
- Host: GitHub
- URL: https://github.com/fuelen/ecto_erd
- Owner: fuelen
- License: apache-2.0
- Created: 2021-08-22T13:03:34.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-11T18:47:23.000Z (about 1 month ago)
- Last Synced: 2025-04-04T01:09:10.015Z (11 days ago)
- Topics: dbml, ecto, elixir, erd, graphviz, mermaid, plantuml, uml
- Language: Elixir
- Homepage:
- Size: 81.2 MB
- Stars: 227
- Watchers: 4
- Forks: 15
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- jimsghstars - fuelen/ecto_erd - A mix task for generating Entity Relationship Diagram from Ecto schemas available in your project. (Elixir)
README
# Ecto.ERD
[](https://hex.pm/packages/ecto_erd)
A mix task for generating an ERD (Entity Relationship Diagram) in various
formats for all Ecto schemas available in your project.Supported formats:
* [DOT](https://en.wikipedia.org/wiki/DOT_(graph_description_language)) (default)
* [PlantUML](https://plantuml.com)
* [DBML](https://www.dbml.org/)
* [QuickDBD](https://www.quickdatabasediagrams.com)
* [Mermaid](https://mermaid-js.github.io/mermaid/#/entityRelationshipDiagram)
Definition of schemas
```elixir
defmodule Blog.Post do
use Ecto.Schemaschema "posts" do
field(:title, :string)
field(:text, :string)
timestamps()
belongs_to(:user, Blog.User)
has_many(:comments, Blog.Comment)
end
enddefmodule Blog.Comment do
use Ecto.Schemaschema "comments" do
field(:text, :string)
timestamps()
belongs_to(:post, Blog.Post)
belongs_to(:user, Blog.User)
end
enddefmodule Blog.User do
use Ecto.Schemaschema "users" do
field(:email, :string)
has_many(:posts, Blog.Post)
has_many(:comments, Blog.Comment)
end
end
```## Installation
The package can be installed by adding `ecto_erd` to your list of dependencies
in `mix.exs`:```elixir
def deps do
[
{:ecto_erd, "~> 0.6", only: :dev}
]
end
```## Usage
Just run:
```sh
mix ecto.gen.erd
```The command above produces a file in DOT format which can be converted to an
image using `graphviz` utility:```sh
dot -Tpng ecto_erd.dot -o erd.png
```Configuration is possible via `.ecto_erd.exs` file.
The docs can be found at [https://hexdocs.pm/ecto_erd](https://hexdocs.pm/ecto_erd).
Configuration examples and output for a couple of open-source projects can be
found in EXAMPLES group of PAGES section.## Troubleshooting
Trying to run `ecto_erd` on an umbrella project? Did you get this error?
```
$ mix ecto.gen.erd
** (RuntimeError) Unable to detect `:otp_app`, please specify it explicitly
```The easiest solution is to run the command on one of the apps in the `apps/` directory. Another option is to create a configuration file and specify the `:otp_app`. See the [docs for details](https://hexdocs.pm/ecto_erd/Mix.Tasks.Ecto.Gen.Erd.html#module-configuration-file).