- Notifications
You must be signed in to change notification settings - Fork229
Create beautiful system diagrams with Go
License
NotificationsYou must be signed in to change notification settings
blushft/go-diagrams
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Go-Diagrams is a loose port ofdiagrams.
Turn this:
d,err:=diagram.New(diagram.Filename("app"),diagram.Label("App"),diagram.Direction("LR"))iferr!=nil {log.Fatal(err)}dns:=gcp.Network.Dns(diagram.NodeLabel("DNS"))lb:=gcp.Network.LoadBalancing(diagram.NodeLabel("NLB"))cache:=gcp.Database.Memorystore(diagram.NodeLabel("Cache"))db:=gcp.Database.Sql(diagram.NodeLabel("Database"))dc:=diagram.NewGroup("GCP")dc.NewGroup("services").Label("Service Layer").Add(gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 1")),gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 2")),gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 3")), ).ConnectAllFrom(lb.ID(),diagram.Forward()).ConnectAllTo(cache.ID(),diagram.Forward())dc.NewGroup("data").Label("Data Layer").Add(cache,db).Connect(cache,db)d.Connect(dns,lb,diagram.Forward()).Group(dc)iferr:=d.Render();err!=nil {log.Fatal(err)}
Into this:
go get github.com/blushft/go-diagrams
Create a diagram:
d,err:=diagram.New(diagram.Label("my-diagram"),diagram.Filename("diagram"))iferr!=nil {log.Fatal(err)}fw:=generic.Network.Firewall().Label("fw")sw:=generic.Network.Switch().Label("sw")d.Connect(fw,sw)
Render the output:
iferr:=d.Render();err!=nil {log.Fatal(err)}
Go-Diagrams will create a folder in the current working directory with the graphviz DOT file and any image assets.
Create an ouput image with any graphviz compatible renderer:
dot -Tpng diagram.dot> diagram.png
About
Create beautiful system diagrams with Go
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published