Current section

Files

Jump to
Raw

README.md

# PhoenixDiagrams
Do you have Mermaid or PlantUML diagrams spread across your codebase? PhoenixDiagrams
collects them into a simple catalog view inside your Phoenix app. You
just point it to a directory of diagram definitions, and it does the rest.
Everything is rendered on the client side.
![PhoenixDiagrams screenshot](docs/screenshot.png)
## Features
- [x] Mermaid diagram rendering
- [x] PlantUML rendering — no Java or PlantUML server required
- [x] Pan and zoom on rendered diagrams
- [x] Copy diagram source to clipboard
- [x] Download rendered diagram as an image
- [x] Dev-only live reload — editing a diagram file updates the view
## Installation
```elixir
def deps do
[
{:phoenix_diagrams, "~> 0.1.0"}
]
end
```
## Usage
There are two steps to get started: mount the router, and then add some
diagrams.
### 1. Mount the router
```elixir
defmodule MyAppWeb.Router do
use MyAppWeb, :router
import PhoenixDiagrams.Router
scope "/" do
pipe_through :browser
live_phoenix_diagrams "/diagrams", diagrams_path: "priv/diagrams"
end
end
```
This mounts `PhoenixDiagrams.DiagramLive` at `/diagrams`. Keep in mind that
`:diagrams_path` is required. There is no default value.
### 2. Add diagram definitions
Now give PhoenixDiagrams something to show. It scans the directory you set in
`:diagrams_path` for `.exs` files. Each file should evaluate to a keyword
list, like this:
```elixir
# priv/phoenix_diagrams/backend/overview.exs
[
group: "Backend",
name: "System Overview",
source: Path.join(__DIR__, "overview.mmd")
]
```
`source` points to a `.mmd` (Mermaid) or `.puml` (PlantUML) file. That's all
you need. Add as many `.exs` files as you like, group them however you want,
and they will appear in the sidebar.
## Development
```sh
mix deps.get # install deps
mix precommit # format + compile (warnings-as-errors) + credo + test
cd demo && mix phx.server # try it in a real Phoenix app
```