From 2adfc667538aef5f7c3ae382740b4c1325df3927 Mon Sep 17 00:00:00 2001
From: Luca Sepe <luca.sepe@gmail.com>
Date: Fri, 5 Jun 2020 18:12:12 +0200
Subject: [PATCH] first commit

---
 .gitignore                                |  36 +++
 LICENSE                                   |  21 ++
 README.md                                 | 261 ++++++++++++++++++++++
 broker.go                                 |  54 +++++
 client.go                                 |  38 ++++
 cmd/.gitignore                            |  38 ++++
 cmd/main.go                               |  95 ++++++++
 database.go                               |  38 ++++
 draft.go                                  | 137 ++++++++++++
 examples/aws-cognito-custom-auth-flow.png | Bin 0 -> 53468 bytes
 examples/aws-cognito-custom-auth-flow.yml |  62 +++++
 examples/backend-for-frontend.png         | Bin 0 -> 49495 bytes
 examples/backend-for-frontend.yml         |  79 +++++++
 examples/br.jpg                           | Bin 0 -> 9677 bytes
 examples/broker.png                       | Bin 0 -> 4907 bytes
 examples/broker.yml                       |   5 +
 examples/broker_impl.yml                  |   6 +
 examples/cl.jpg                           | Bin 0 -> 9960 bytes
 examples/cl.png                           | Bin 0 -> 28755 bytes
 examples/client.png                       | Bin 0 -> 2150 bytes
 examples/client.yml                       |   6 +
 examples/client_impl.yml                  |   6 +
 examples/database.png                     | Bin 0 -> 4248 bytes
 examples/database.yml                     |   5 +
 examples/database_impl.yml                |   6 +
 examples/db.jpg                           | Bin 0 -> 10586 bytes
 examples/fn.jpg                           | Bin 0 -> 11424 bytes
 examples/function.png                     | Bin 0 -> 2789 bytes
 examples/function.yml                     |   5 +
 examples/function_impl.yml                |   6 +
 examples/gateway.png                      | Bin 0 -> 2083 bytes
 examples/gateway.yml                      |   6 +
 examples/gateway_impl.yml                 |   7 +
 examples/gt.jpg                           | Bin 0 -> 10800 bytes
 examples/message-bus-pattern.png          | Bin 0 -> 55359 bytes
 examples/message-bus-pattern.yml          |  58 +++++
 examples/ms.jpg                           | Bin 0 -> 8691 bytes
 examples/qs.jpg                           | Bin 0 -> 8928 bytes
 examples/queue.png                        | Bin 0 -> 5061 bytes
 examples/queue.yml                        |   5 +
 examples/queue_impl.yml                   |   6 +
 examples/service.png                      | Bin 0 -> 2662 bytes
 examples/service.yml                      |   5 +
 examples/service_impl.yml                 |   6 +
 examples/st.jpg                           | Bin 0 -> 9419 bytes
 examples/storage.png                      | Bin 0 -> 2757 bytes
 examples/storage.yml                      |   5 +
 examples/storage_impl.yml                 |   6 +
 function.go                               |  38 ++++
 gateway.go                                |  43 ++++
 go.mod                                    |   8 +
 pkg/cluster/cluster.go                    |  65 ++++++
 pkg/edge/edge.go                          | 105 +++++++++
 pkg/graph/graph.go                        |  75 +++++++
 pkg/node/node.go                          |  79 +++++++
 queue.go                                  |  58 +++++
 service.go                                |  37 +++
 storage.go                                |  38 ++++
 58 files changed, 1554 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 LICENSE
 create mode 100644 README.md
 create mode 100644 broker.go
 create mode 100644 client.go
 create mode 100644 cmd/.gitignore
 create mode 100644 cmd/main.go
 create mode 100644 database.go
 create mode 100644 draft.go
 create mode 100644 examples/aws-cognito-custom-auth-flow.png
 create mode 100644 examples/aws-cognito-custom-auth-flow.yml
 create mode 100644 examples/backend-for-frontend.png
 create mode 100644 examples/backend-for-frontend.yml
 create mode 100644 examples/br.jpg
 create mode 100644 examples/broker.png
 create mode 100644 examples/broker.yml
 create mode 100644 examples/broker_impl.yml
 create mode 100644 examples/cl.jpg
 create mode 100644 examples/cl.png
 create mode 100644 examples/client.png
 create mode 100644 examples/client.yml
 create mode 100644 examples/client_impl.yml
 create mode 100644 examples/database.png
 create mode 100644 examples/database.yml
 create mode 100644 examples/database_impl.yml
 create mode 100644 examples/db.jpg
 create mode 100644 examples/fn.jpg
 create mode 100644 examples/function.png
 create mode 100644 examples/function.yml
 create mode 100644 examples/function_impl.yml
 create mode 100644 examples/gateway.png
 create mode 100644 examples/gateway.yml
 create mode 100644 examples/gateway_impl.yml
 create mode 100644 examples/gt.jpg
 create mode 100644 examples/message-bus-pattern.png
 create mode 100644 examples/message-bus-pattern.yml
 create mode 100644 examples/ms.jpg
 create mode 100644 examples/qs.jpg
 create mode 100644 examples/queue.png
 create mode 100644 examples/queue.yml
 create mode 100644 examples/queue_impl.yml
 create mode 100644 examples/service.png
 create mode 100644 examples/service.yml
 create mode 100644 examples/service_impl.yml
 create mode 100644 examples/st.jpg
 create mode 100644 examples/storage.png
 create mode 100644 examples/storage.yml
 create mode 100644 examples/storage_impl.yml
 create mode 100644 function.go
 create mode 100644 gateway.go
 create mode 100644 go.mod
 create mode 100644 pkg/cluster/cluster.go
 create mode 100644 pkg/edge/edge.go
 create mode 100644 pkg/graph/graph.go
 create mode 100644 pkg/node/node.go
 create mode 100644 queue.go
 create mode 100644 service.go
 create mode 100644 storage.go

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ab6648a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,36 @@
+## Intellij
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/encodings.xml
+.idea/**/compiler.xml
+.idea/**/misc.xml
+.idea/**/modules.xml
+.idea/**/vcs.xml
+
+## VSCode
+.vscode/
+
+## File-based project format:
+*.iws
+*.iml
+.idea/
+
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+*.dat
+*.DS_Store
+go.sum
+
+# Test binary, built with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# Goreleaser builds
+dist/**
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..c1d8e80
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Luca Sepe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2c3cf8e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,261 @@
+# Draft
+
+A commandline tool that generate **H**igh **L**evel microservice & serverless **A**rchitecture diagrams using a declarative syntax defined in a YAML file.
+
+- Works on Linux, Mac OSX, Windows
+- Just a single portable binary file
+- It Does One Thing Well
+- Input data in flat YAML text files
+- Usable with shell scripts
+- Can take input from pipes `cat`
+
+## How `draft` works?
+
+`draft` takes in input a declarative YAML file and generates a [`dot`](https://en.wikipedia.org/wiki/DOT_(graph_description_language)) script for [Graphviz](https://www.graphviz.org/)
+
+```bash
+draft backend-for-frontend.yml | dot -Tpng -Gdpi=200 > backend-for-frontend.png 
+```
+
+Piping the `draft` output to [GraphViz](http://www.graphviz.org/doc/info/output.html/) `dot` you can generate the following output formats:
+
+| format       | command                                                        |
+|:-------------|:---------------------------------------------------------------|
+| GIF          | <code>draft input.yml &#124; dot -Tgif > output.gif</code>     |
+| JPEG         | <code>draft input.yml &#124; dot -Tjpg > output.jpg</code>     |
+| PostScript   | <code>draft input.yml &#124; dot -Tps > output.ps</code>       |
+| PSD          | <code>draft input.yml &#124; dot -Tpsd > output.psd</code>     |
+| SVG          | <code>draft input.yml &#124; dot -Tsvg > output.svg</code>     |
+| WebP         | <code>draft input.yml &#124; dot -Twebp > output.webp</code>   |
+
+To install GraphViz to your favorite OS, please, follow this link [https://graphviz.gitlab.io/download/](https://graphviz.gitlab.io/download/).
+
+## Components
+
+### A picture is worth a thousand words 
+
+... and this is particularly true in regard to complex IT architectures. 
+
+The basic unit of each _draft_ design is the `component`:
+
+```go
+type Component struct {
+	ID        string `yaml:"id,omitempty"`        // optional - autogenerated if omitted (read more for details...)
+	Kind      string `yaml:"kind"`                // required (one of: service, gateway, queue, broker, function, storage, database)
+	Label     string `yaml:"label,omitempty"`     // optional - the component description (or scope)  
+	Provider  string `yaml:"provider,omitempty"`  // optional - you can use this to specify the implementation
+	FillColor string `yaml:"fillColor,omitempty"` // optional - the hex code for the background color 
+	FontColor string `yaml:"fontColor,omitempty"` // optional - the hex code for the foreground color
+	Rounded   bool   `yaml:"rounded,omitempty"`   // optional - set to true if you wants rounded shapes
+}
+```
+
+Draft uses a set of symbols independent from the different providers (AWS, Microsoft Azure, GCP).
+
+- you can eventually describe the implementation using the `provider` attribute.
+
+Below is a list of all the components currently implemented.
+
+| Component          | Kind        | YAML                      | Output                           |
+|:-------------------|:------------|:--------------------------|:--------------------------------:|
+| **Client**         | `client`    | ![](./examples/cl.jpg)    | ![](./examples/client.png)       |
+| **Microservice**   | `service`   | ![](./examples/ms.jpg)    | ![](./examples/service.png)      |
+| **Gateway**        | `gateway`   | ![](./examples/gt.jpg)    | ![](./examples/gateway.png)      |
+| **Message Broker** | `broker`    | ![](./examples/br.jpg)    | ![](./examples/broker.png)       |
+| **Queue Service**  | `queue`     | ![](./examples/qs.jpg)    | ![](./examples/queue.png)        |
+| **Object Storage** | `storage`   | ![](./examples/st.jpg)    | ![](./examples/storage.png)      |
+| **Function**       | `function`  | ![](./examples/fn.jpg)    | ![](./examples/function.png)     |
+| **Database**       | `database`  | ![](./examples/db.jpg)    | ![](./examples/database.png)     |
+
+## Connections
+
+You can connect each component by arrows.
+
+To be able to connect an _origin component_ with one or more _target component_ you need to specify each `componentId`.
+
+- you can define your component `id` explicitly
+- you can omit the component `id` attribute and it will be autogenerated
+
+### Autogenerated `id`
+
+An autogenerated `id` has a prefix and a sequential number
+
+- the prefix is related to the component `kind`
+
+Aautogenerated `id` prefix mapping.
+
+| a kind of... | will generate an `id` prefix with... | examples       |
+|:-------------|:-------------------------------------|:---------------|
+| `client`     | `cl`                                 | `cl1, cl2,...` |
+| `service`    | `ms`                                 | `ms1, ms2,...` |
+| `gateway`    | `gt`                                 | `gt1, gt2,...` |
+| `broker`     | `br`                                 | `br1, br2,...` |
+| `queue`      | `qs`                                 | `qs1, qs2,...` |
+| `storage`    | `st`                                 | `st1, st2,...` |
+| `function`   | `fn`                                 | `fn1, fn2,...` |
+| `database`   | `db`                                 | `db1, db2,...` |
+
+A `connection` has the following properties:
+
+```go
+type Connection struct {
+	Origin struct {
+		ComponentID string `yaml:"componentId"`
+	} `yaml:"origin"`
+	Targets []struct {
+		ComponentID string `yaml:"componentId"`
+		Label       string `yaml:"label,omitempty"`
+		Color       string `yaml:"color,omitempty"`
+		Dashed      bool   `yaml:"dashed,omitempty"`
+    Dir         string `yaml:"dir,omitempty"`
+    Highlight   bool   `yaml:"highlight,omitempty"`
+	} `yaml:"targets"`
+}
+```
+
+## Example 1 - Message Bus Pattern
+
+Create the `draft` architecture descriptor YAML with your favorite editor:
+
+```yaml
+title: message bus pattern 
+backgroundColor: '#ffffff'
+components:
+  - 
+    kind: service
+    label: Producer
+    provider: AWS EC2
+  -
+    kind: broker
+    label: "Notification\nService"
+    provider: AWS SNS
+  -
+    kind: queue
+    label: "event queue @ topic 1"
+    provider: AWS SQS
+  -
+    kind: queue
+    label: "event queue @ topic 2"
+    provider: AWS SQS
+  -
+    kind: service
+    label: "Consumer\n@ topic 1"
+    provider: AWS EC2
+  -
+    kind: service
+    label: "Consumer\n@ topic 2"
+    provider: AWS EC2
+connections:
+  -
+    origin: 
+      componentId: ms1
+    targets:
+      -
+        componentId: br1
+  -
+    origin:
+      componentId: br1
+    targets:
+      -
+        componentId: qs1
+        dashed: true
+      -
+        componentId: qs2
+        dashed: true
+  -
+    origin:
+      componentId: qs1
+    targets:
+      -
+        componentId: ms2
+        dir: back
+  -
+    origin: 
+      componentId: qs2
+    targets:
+      -
+        componentId: ms3
+        dir: back
+```
+
+Then run `draft`:
+
+```bash
+draft message-bus-pattern.yml | dot -Tpng > message-bus-pattern.png
+```
+
+Here the generated output:
+
+![](./examples/message-bus-pattern.png)
+
+
+## Example 2 - AWS Cognito Custom Authentication Flow
+
+Create the draft architecture descriptor YAML with your favorite editor:
+
+```yaml
+title: Amazon Cognito Custom Authentication Flow with external database
+backgroundColor: '#ffffff'
+components:
+  -
+    kind: client
+    label: "Web App"
+  -
+    kind: client
+    label: "Mobile App"
+  -
+    kind: service
+    label: "Cognito"
+    provider: "AWS Cognito"
+    fillColor: '#991919'
+    fontColor: '#fafafa'
+  -
+    kind: function
+    label: "Define\nAuthChallange"
+    provider: "AWS Lambda"
+  -
+    kind: function
+    label: "Create\nAuthChallange"
+    provider: "AWS Lambda"
+  -
+    kind: function
+    label: "Verify\nAuthChallange"
+    provider: "AWS Lambda"
+  -
+    kind: database
+    label: "Users\nRepository"
+    provider: "AWS RDS"
+connections:
+  -
+    origin:
+      componentId: cl1
+    targets:
+      -
+        componentId: ms1
+  -
+    origin:
+      componentId: cl2
+    targets:
+      -
+        componentId: ms1
+  -
+    origin:
+      componentId: ms1
+    targets:
+      -
+        componentId: fn1
+      -
+        componentId: fn2
+      -
+        componentId: fn3
+  -
+    origin:
+      componentId: fn2
+    targets:
+      -
+        componentId: db1
+```
+
+Here the generated output:
+
+![](./examples/aws-cognito-custom-auth-flow.png)
\ No newline at end of file
diff --git a/broker.go b/broker.go
new file mode 100644
index 0000000..41a1656
--- /dev/null
+++ b/broker.go
@@ -0,0 +1,54 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type broker struct {
+	seq int16
+}
+
+func (rcv *broker) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("br%d", rcv.seq)
+}
+
+func (rcv *broker) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	label := comp.Label
+	if strings.TrimSpace(comp.Label) == "" {
+		label = "Message Broker"
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor(comp.FillColor, "#e0eeeeff"),
+		node.Shape("cds"),
+	)
+	el.Attr("height", "0.8")
+}
+
+/** Alternative
+
+label=<table border="0" cellspacing="0">
+                    <tr><td border="1" align="center"><font point-size="8"><b>&nbsp;topic 1&nbsp;</b></font></td></tr>
+                    <tr><td border="1" align="center"><font point-size="8"><b>&nbsp;topic 2&nbsp;</b></font></td></tr>
+                    <tr><td border="1" align="center"><font point-size="8"><b>&nbsp;...&nbsp;</b></font></td></tr>
+                    <tr><td border="1" align="center"><font point-size="8"><b>&nbsp;topic N&nbsp;</b></font></td></tr>
+				</table> >
+shape="plain"
+
+**/
diff --git a/client.go b/client.go
new file mode 100644
index 0000000..3e68abb
--- /dev/null
+++ b/client.go
@@ -0,0 +1,38 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type client struct {
+	seq int16
+}
+
+func (rcv *client) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("cl%d", rcv.seq)
+}
+
+func (rcv *client) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(comp.Label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor(comp.FillColor, "#90ee90ff"),
+		node.Shape("underline"),
+	)
+	el.Attr("fontsize", "8")
+	el.Attr("height", "0.3")
+}
diff --git a/cmd/.gitignore b/cmd/.gitignore
new file mode 100644
index 0000000..3c46005
--- /dev/null
+++ b/cmd/.gitignore
@@ -0,0 +1,38 @@
+## Intellij
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/encodings.xml
+.idea/**/compiler.xml
+.idea/**/misc.xml
+.idea/**/modules.xml
+.idea/**/vcs.xml
+
+## File-based project format:
+*.iws
+*.iml
+.idea/
+
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+*.dat
+*.DS_Store
+go.sum
+
+# Test binary, built with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# Goreleaser builds
+dist/**
+
+# Goreleaser file
+.goreleaser.yml
+
+# Custom Bash Scripts
+draft-all.sh
diff --git a/cmd/main.go b/cmd/main.go
new file mode 100644
index 0000000..0ccee21
--- /dev/null
+++ b/cmd/main.go
@@ -0,0 +1,95 @@
+package main
+
+import (
+	"flag"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"path/filepath"
+	"strings"
+
+	"github.com/lucasepe/draft"
+)
+
+// go run main.go | dot -Tpng -Gdpi=300 > test.png
+
+const (
+	maxFileSize = 500 * 1024
+	banner      = `
+______                __  _   
+|  _  \              / _|| |        Crafted with passion by Luca Sepe
+| | | | _ __   __ _ | |_ | |_       
+| | | || '__| / _' ||  _|| __|      https://github.com/lucasepe/draft
+| |/ / | |   | (_| || |  | |_ 
+|___/  |_|    \__,_||_|   \__|                {{VERSION}}`
+)
+
+var (
+	version = "dev"
+	commit  = "none"
+	date    = "unknown"
+)
+
+func main() {
+	configureFlags()
+
+	if flag.CommandLine.Arg(0) == "" {
+		flag.CommandLine.Usage()
+		os.Exit(2)
+	}
+
+	fn, err := filepath.Abs(flag.Args()[0])
+	handleErr(err)
+
+	file, err := os.Open(fn)
+	handleErr(err)
+
+	defer file.Close()
+
+	ark, err := draft.NewDraft(file)
+	handleErr(err)
+
+	str, err := ark.Sketch()
+	handleErr(err)
+
+	fmt.Println(str)
+}
+
+// handleErr check for an error and eventually exit
+func handleErr(err error) {
+	if err != nil {
+		fmt.Fprintf(os.Stderr, "error: %s\n", err.Error())
+		os.Exit(1)
+	}
+}
+
+func configureFlags() {
+	flag.CommandLine.Usage = func() {
+		printBanner()
+		fmt.Printf("Generate High Level Microservice Architecture diagrams for GraphViz using simple YAML syntax.\n\n")
+
+		name := filepath.Base(os.Args[0])
+
+		fmt.Print("USAGE:\n\n")
+		fmt.Printf("  %s [options] /path/to/yaml/file\n\n", name)
+
+		fmt.Print("EXAMPLE:\n\n")
+		fmt.Printf("  %s input.yml | dot -Tpng -Gdpi=200 > output.png\n\n", name)
+
+		fmt.Print("OPTIONS:\n\n")
+		flag.CommandLine.SetOutput(os.Stdout)
+		flag.CommandLine.PrintDefaults()
+		flag.CommandLine.SetOutput(ioutil.Discard) // hide flag errors
+		fmt.Print("  -help\n\tprints this message\n")
+		fmt.Println()
+	}
+
+	flag.CommandLine.SetOutput(ioutil.Discard) // hide flag errors
+	flag.CommandLine.Init(os.Args[0], flag.ExitOnError)
+
+	flag.CommandLine.Parse(os.Args[1:])
+}
+
+func printBanner() {
+	fmt.Print(strings.Trim(strings.Replace(banner, "{{VERSION}}", version, 1), "\n"), "\n\n")
+}
diff --git a/database.go b/database.go
new file mode 100644
index 0000000..42990e8
--- /dev/null
+++ b/database.go
@@ -0,0 +1,38 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type database struct {
+	seq int16
+}
+
+func (rcv *database) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("db%d", rcv.seq)
+}
+
+func (rcv *database) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(comp.Label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor(comp.FillColor, "#f5f5dcff"),
+		node.Shape("cylinder"),
+	)
+	el.Attr("height", "0.5")
+	el.Attr("fontsize", "6")
+}
diff --git a/draft.go b/draft.go
new file mode 100644
index 0000000..887d87f
--- /dev/null
+++ b/draft.go
@@ -0,0 +1,137 @@
+package draft
+
+import (
+	"fmt"
+	"io"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/edge"
+	"github.com/lucasepe/draft/pkg/graph"
+	"gopkg.in/yaml.v2"
+)
+
+const (
+	kindClient   = "client"
+	kindGateway  = "gateway"
+	kindService  = "service"
+	kindQueue    = "queue"
+	kindBroker   = "broker"
+	kindStorage  = "storage"
+	kindDatabase = "database"
+	kindFunction = "function"
+)
+
+// Connection is a link between two components.
+type Connection struct {
+	Origin struct {
+		ComponentID string `yaml:"componentId"`
+	} `yaml:"origin"`
+	Targets []struct {
+		ComponentID string `yaml:"componentId"`
+		Label       string `yaml:"label,omitempty"`
+		Color       string `yaml:"color,omitempty"`
+		Dashed      bool   `yaml:"dashed,omitempty"`
+		Dir         string `yaml:"dir,omitempty"`
+		Highlight   bool   `yaml:"highlight,omitempty"`
+	} `yaml:"targets"`
+}
+
+// Component is a basic architecture unit.
+type Component struct {
+	ID        string `yaml:"id,omitempty"`
+	Kind      string `yaml:"kind"`
+	Label     string `yaml:"label,omitempty"`
+	Provider  string `yaml:"provider,omitempty"`
+	FillColor string `yaml:"fillColor,omitempty"`
+	FontColor string `yaml:"fontColor,omitempty"`
+	Rounded   bool   `yaml:"rounded,omitempty"`
+}
+
+// Draft represents a whole diagram.
+type Draft struct {
+	Title           string       `yaml:"title,omitempty"`
+	BackgroundColor string       `yaml:"backgroundColor,omitempty"`
+	Components      []Component  `yaml:"components"`
+	Connections     []Connection `yaml:"connections,omitempty"`
+
+	sketchers map[string]interface {
+		sketch(*dot.Graph, Component)
+	}
+}
+
+// NewDraft returns a new decoded Draft struct
+func NewDraft(r io.Reader) (*Draft, error) {
+	res := &Draft{
+		sketchers: map[string]interface {
+			sketch(*dot.Graph, Component)
+		}{
+			kindClient:   &client{},
+			kindGateway:  &gateway{},
+			kindService:  &service{},
+			kindBroker:   &broker{},
+			kindQueue:    &queue{},
+			kindFunction: &function{},
+			kindStorage:  &storage{},
+			kindDatabase: &database{},
+		},
+	}
+
+	// Init new YAML decode
+	d := yaml.NewDecoder(r)
+
+	// Start YAML decoding from file
+	if err := d.Decode(&res); err != nil {
+		return nil, err
+	}
+
+	return res, nil
+}
+
+// Sketch generates the GraphViz definition for this architecture diagram.
+func (ark *Draft) Sketch() (string, error) {
+	g := graph.New(graph.BackgroundColor(ark.BackgroundColor), graph.Label(ark.Title))
+
+	if err := sketchComponents(g, ark); err != nil {
+		return "", err
+	}
+
+	if err := sketchConnections(g, ark); err != nil {
+		return "", err
+	}
+
+	return g.String(), nil
+}
+
+func sketchComponents(graph *dot.Graph, draft *Draft) error {
+	for _, el := range draft.Components {
+		sketcher, ok := draft.sketchers[el.Kind]
+		if !ok {
+			return fmt.Errorf("render not found for component of kind '%s'", el.Kind)
+		}
+
+		sketcher.sketch(graph, el)
+	}
+
+	return nil
+}
+
+func sketchConnections(graph *dot.Graph, draft *Draft) error {
+	for _, el := range draft.Connections {
+		var from = el.Origin.ComponentID
+
+		for _, x := range el.Targets {
+			err := edge.New(graph, from, x.ComponentID,
+				edge.Label(x.Label),
+				edge.Dir(x.Dir),
+				edge.Color(x.Color),
+				edge.Dashed(x.Dashed),
+				edge.Highlight(x.Highlight))
+
+			if err != nil {
+				return err
+			}
+		}
+	}
+
+	return nil
+}
diff --git a/examples/aws-cognito-custom-auth-flow.png b/examples/aws-cognito-custom-auth-flow.png
new file mode 100644
index 0000000000000000000000000000000000000000..1354b1f6743a9be919029edeaf812a74de75f425
GIT binary patch
literal 53468
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
O2kD3M;)SC6ul@((pG3C+

literal 0
HcmV?d00001

diff --git a/examples/aws-cognito-custom-auth-flow.yml b/examples/aws-cognito-custom-auth-flow.yml
new file mode 100644
index 0000000..6eff08e
--- /dev/null
+++ b/examples/aws-cognito-custom-auth-flow.yml
@@ -0,0 +1,62 @@
+title: Amazon Cognito Custom Authentication Flow with external database
+backgroundColor: '#ffffff'
+components:
+  -
+    kind: client
+    label: "Web App"
+    provider: SPA
+  -
+    kind: client
+    label: "Mobile App"
+    provider: "Android & iOS"
+  -
+    kind: service
+    label: "Cognito"
+    provider: "AWS Cognito"
+    fillColor: '#991919'
+    fontColor: '#fafafa'
+  -
+    kind: function
+    label: "Define\nAuthChallange"
+    provider: "AWS Lambda"
+  -
+    kind: function
+    label: "Create\nAuthChallange"
+    provider: "AWS Lambda"
+  -
+    kind: function
+    label: "Verify\nAuthChallange"
+    provider: "AWS Lambda"
+  -
+    kind: database
+    label: "Users\nRepository"
+    provider: "AWS RDS"
+connections:
+  -
+    origin:
+      componentId: cl1
+    targets:
+      -
+        componentId: ms1
+  -
+    origin:
+      componentId: cl2
+    targets:
+      -
+        componentId: ms1
+  -
+    origin:
+      componentId: ms1
+    targets:
+      -
+        componentId: fn1
+      -
+        componentId: fn2
+      -
+        componentId: fn3
+  -
+    origin:
+      componentId: fn2
+    targets:
+      -
+        componentId: db1
\ No newline at end of file
diff --git a/examples/backend-for-frontend.png b/examples/backend-for-frontend.png
new file mode 100644
index 0000000000000000000000000000000000000000..2174d9ccc7f0af4f64177d505f75f50fbbd7fed5
GIT binary patch
literal 49495
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%0DGPkhu#UqEt5J}T_e^Pv4e}G(hVbHtfQGy+>~4+f
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

literal 0
HcmV?d00001

diff --git a/examples/backend-for-frontend.yml b/examples/backend-for-frontend.yml
new file mode 100644
index 0000000..fc59986
--- /dev/null
+++ b/examples/backend-for-frontend.yml
@@ -0,0 +1,79 @@
+title: Backend For Frontend (BFF)
+backgroundColor: '#ffffff'
+components:
+  -
+    kind: client
+    label: Web App
+    fillColor: '#ee82ee'
+  -
+    kind: client
+    label: Mobile App
+    fillColor: '#708090'
+  -
+    kind: gateway
+    label: "Web BFF\nAPI Gateway"
+  -
+    kind: gateway
+    label: "Mobile BFF\nAPI Gateway"
+  -
+    kind: service
+    label: μService A
+    fillColor: '#b0e0e6'
+  -
+    kind: service
+    label: μService B
+  -
+    kind: service
+    label: μService C
+    fillColor: '#00ff7f'
+  -
+    kind: service
+    label: μService D
+    fillColor: '#00007f'
+    fontColor: '#fafafa'
+connections:
+  - 
+    origin:
+      componentId: cl1
+    targets:
+      -
+        componentId: gt1
+        color: '#ee82ee'
+  - 
+    origin:
+      componentId: cl2
+    targets:
+      -
+        componentId: gt2
+  -
+    origin: 
+      componentId: gt1
+    targets:
+      -
+        componentId: ms1
+        color: '#ee82ee'
+      -
+        componentId: ms2
+        color: '#ee82ee'
+      -
+        componentId: ms3
+        color: '#ee82ee'
+      -
+        componentId: ms4
+        color: '#ee82ee'
+  -
+    origin: 
+      componentId: gt2
+    targets:
+      -
+        componentId: ms1
+        highlight: true
+      -
+        componentId: ms2
+        highlight: true
+      -
+        componentId: ms3
+        highlight: true
+      -
+        componentId: ms4
+        highlight: true
\ No newline at end of file
diff --git a/examples/br.jpg b/examples/br.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2d7c08a765d9e1c615197e163332a3e55301ebef
GIT binary patch
literal 9677
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

literal 0
HcmV?d00001

diff --git a/examples/broker.png b/examples/broker.png
new file mode 100644
index 0000000000000000000000000000000000000000..6adb5c789758daf3eb10a3b505f7dbd481de1b7f
GIT binary patch
literal 4907
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
Ha(?z-<wT#9

literal 0
HcmV?d00001

diff --git a/examples/broker.yml b/examples/broker.yml
new file mode 100644
index 0000000..2ceb258
--- /dev/null
+++ b/examples/broker.yml
@@ -0,0 +1,5 @@
+--- 
+components: 
+  - 
+    kind: broker
+    label: "Message Broker"
\ No newline at end of file
diff --git a/examples/broker_impl.yml b/examples/broker_impl.yml
new file mode 100644
index 0000000..bbfd5ae
--- /dev/null
+++ b/examples/broker_impl.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: broker
+    label: "Message Broker"
+    provider: AWS SNS
\ No newline at end of file
diff --git a/examples/cl.jpg b/examples/cl.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9859aeb819911a8f173feb15477e58368abed52e
GIT binary patch
literal 9960
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
J!yA4%`5)gD{wM$d

literal 0
HcmV?d00001

diff --git a/examples/cl.png b/examples/cl.png
new file mode 100644
index 0000000000000000000000000000000000000000..dfd2e6e19cf47de9086368b1bfdd7805f563fc08
GIT binary patch
literal 28755
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

literal 0
HcmV?d00001

diff --git a/examples/client.png b/examples/client.png
new file mode 100644
index 0000000000000000000000000000000000000000..875542f7ee446f3d506ef6816841b9b54e95733d
GIT binary patch
literal 2150
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
KqN;y;@Z#T#cM+Qa

literal 0
HcmV?d00001

diff --git a/examples/client.yml b/examples/client.yml
new file mode 100644
index 0000000..a656f77
--- /dev/null
+++ b/examples/client.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: client
+    label: "Web App"
+    fillColor: '#ee82ee'
diff --git a/examples/client_impl.yml b/examples/client_impl.yml
new file mode 100644
index 0000000..5989bfb
--- /dev/null
+++ b/examples/client_impl.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: client
+    label: "Web App"
+    provider: SPA
diff --git a/examples/database.png b/examples/database.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e92d284baa6e2bfba9ea76cfee0c8ec36e004ab
GIT binary patch
literal 4248
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
E1&;$@DF6Tf

literal 0
HcmV?d00001

diff --git a/examples/database.yml b/examples/database.yml
new file mode 100644
index 0000000..55060fb
--- /dev/null
+++ b/examples/database.yml
@@ -0,0 +1,5 @@
+--- 
+components: 
+  - 
+    kind: database
+    label: "Users\nRepository"
diff --git a/examples/database_impl.yml b/examples/database_impl.yml
new file mode 100644
index 0000000..6d464cc
--- /dev/null
+++ b/examples/database_impl.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: database
+    label: "Users\nRepository"
+    provider: AWS RDS
diff --git a/examples/db.jpg b/examples/db.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..dedfdea2ea62c844e77fec20420eda581e794f9b
GIT binary patch
literal 10586
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

literal 0
HcmV?d00001

diff --git a/examples/fn.jpg b/examples/fn.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d5b33d499c5d228b97d9dd8a58122588911b42c3
GIT binary patch
literal 11424
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
LKYtMAcQf@Ll9o$O

literal 0
HcmV?d00001

diff --git a/examples/function.png b/examples/function.png
new file mode 100644
index 0000000000000000000000000000000000000000..12c3847ce26246f4cf005c303655ce0af3dee353
GIT binary patch
literal 2789
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

literal 0
HcmV?d00001

diff --git a/examples/function.yml b/examples/function.yml
new file mode 100644
index 0000000..06dbe4c
--- /dev/null
+++ b/examples/function.yml
@@ -0,0 +1,5 @@
+--- 
+components: 
+  - 
+    kind: function
+    label: "Create\nAuth Challange"
diff --git a/examples/function_impl.yml b/examples/function_impl.yml
new file mode 100644
index 0000000..58f7ba1
--- /dev/null
+++ b/examples/function_impl.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: function
+    label: "Create\nAuth Challange"
+    provider: AWS Lambda
diff --git a/examples/gateway.png b/examples/gateway.png
new file mode 100644
index 0000000000000000000000000000000000000000..24b56955da0246f2d6ac40b65da8069ab7491738
GIT binary patch
literal 2083
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
QC#es(VP<EFHTFsU4`$XD5dZ)H

literal 0
HcmV?d00001

diff --git a/examples/gateway.yml b/examples/gateway.yml
new file mode 100644
index 0000000..c669810
--- /dev/null
+++ b/examples/gateway.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: gateway
+    label: "API Gateway"
+    fontColor: '#fafafaff'
\ No newline at end of file
diff --git a/examples/gateway_impl.yml b/examples/gateway_impl.yml
new file mode 100644
index 0000000..9f6ade4
--- /dev/null
+++ b/examples/gateway_impl.yml
@@ -0,0 +1,7 @@
+--- 
+components: 
+  - 
+    kind: gateway
+    label: "API Gateway"
+    fontColor: '#fafafaff'
+    provider: "AWS API\nGateway"
\ No newline at end of file
diff --git a/examples/gt.jpg b/examples/gt.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..27631b5d7f769674d607e484145f9f7692aaacb4
GIT binary patch
literal 10800
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
Hi|PLYLQ8-J

literal 0
HcmV?d00001

diff --git a/examples/message-bus-pattern.png b/examples/message-bus-pattern.png
new file mode 100644
index 0000000000000000000000000000000000000000..d19fabfdf3a9e46919d9fc0b555619df0c923aee
GIT binary patch
literal 55359
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
IkT44PA9ljEz5oCK

literal 0
HcmV?d00001

diff --git a/examples/message-bus-pattern.yml b/examples/message-bus-pattern.yml
new file mode 100644
index 0000000..cd64f1a
--- /dev/null
+++ b/examples/message-bus-pattern.yml
@@ -0,0 +1,58 @@
+title: message bus pattern 
+backgroundColor: '#ffffff'
+components:
+  - 
+    kind: service
+    label: Producer
+    provider: AWS EC2
+  -
+    kind: broker
+    label: "Notification\nService"
+    provider: AWS SNS
+  -
+    kind: queue
+    label: "event queue @ topic 1"
+    provider: AWS SQS
+  -
+    kind: queue
+    label: "event queue @ topic 2"
+    provider: AWS SQS
+  -
+    kind: service
+    label: "Consumer\n@ topic 1"
+    provider: AWS EC2
+  -
+    kind: service
+    label: "Consumer\n@ topic 2"
+    provider: AWS EC2
+connections:
+  -
+    origin: 
+      componentId: ms1
+    targets:
+      -
+        componentId: br1
+  -
+    origin:
+      componentId: br1
+    targets:
+      -
+        componentId: qs1
+        dashed: true
+      -
+        componentId: qs2
+        dashed: true
+  -
+    origin:
+      componentId: qs1
+    targets:
+      -
+        componentId: ms2
+        dir: back
+  -
+    origin: 
+      componentId: qs2
+    targets:
+      -
+        componentId: ms3
+        dir: back
diff --git a/examples/ms.jpg b/examples/ms.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d48fe24714ddbbc30e32e3268c99d61aeee98bbb
GIT binary patch
literal 8691
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

literal 0
HcmV?d00001

diff --git a/examples/qs.jpg b/examples/qs.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ffaf71b7ab8d27b39a9b152284cdfacd5f423cac
GIT binary patch
literal 8928
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

literal 0
HcmV?d00001

diff --git a/examples/queue.png b/examples/queue.png
new file mode 100644
index 0000000000000000000000000000000000000000..313c62775cac96e2f1a0a4e9d99ff6fd2c01ea68
GIT binary patch
literal 5061
zcmbtYXHXQ|x*c)`LCNVTLCHuMGKl1?1j!i$6lTb2$QcQv1PP*mat=927}6jaBnL^u
zkdZ;0fgul>JLlbcKVH?Xy7lT*cUM<;SMUARx4*U5T3_-rLoFIgHc9{hK%=9rZVUhr
z*x@e@a#H*oX!}w){zmGgr=<?K{rf2DD9r=_?uP29tC|KE>@J4{n{FYZ4j>s66o@+n
z*+~!HP$mWRTd9^65k^?$yb)qTexB1s8#gt<W-ky%p{lcO;I)Ly7mUonZW5nvPD|lE
z3=0o$+*_}2Duz*aRL5QNbog=DHeXlNsN@8Edo<5&C1fHmL^Xp~=bxSBAxQdQ+N9a5
zG<}d?$rG!3_CKWGNk+?cJ=Xyx9xF|`$UJ#P2n9UkYp0)nzp!cM=gpvsZ6pr9dq%{b
zNR}{@yi68MeMV_PCQQIZaxwSjya;t$+0}0__e$qgaXL{2!onSWGb;-3h;Fh@5+e3}
zwNW4CM=sAaxXx0W&kBL-!Xg3mF&me9YkvSwEzt5Gi^>RX2>r=O?^27{5LT79R#Ufh
z@R!bDWCto;eiI&7v?@}yl%ftdiPb0r!p+f#e>ed58N^$Y7avMf;D`I`<7?X+DfKJc
zuAcl6wWysg%9xei^faVY`Hn?!wtka}PdqErBi>&Wx3s}DWrT}FZbV=}YufUYa)H0U
zkG!&7DWBWoUKG=d{t%@`5!zZiCyXVe_MDm1G3e{5bg|N&Oo=ag%SA)|hb)hyUpfFq
z;6|WA2;-5pcI?Q=zeNzcJvn~)V?8w{-_@3_csFCl$+jP7L{k|ain#bOBtbq9-R!@J
zKtBmJ@a*JHN+GzLAN;X|+XZSq6v*hUq&m@jFPN~!N79FpnB>I1D=fxjV2+TRAd-mo
zA<I!V?`*IA!lBH33DX2uEiYegym<zLa5(zDagP~&L2(^RuGNwKKdXm-SWf@H-(Q(M
z7y>=H%Sv)pF<!4iXtMGBfOfrk!gOs~))z{ep2`z(E9*o?;JlFp4Qhu|9RmcT<E2NG
zi40SD1`%E0jU;Z;Fg6Jo`@T9yE4cQY3jMqYGPbq%<emkfFN&cklA|@9q$Y{yM$zHL
z_XUo%Sy|s(vKGPgGyKXv9RRwtr`Cp4Wo1;v<Ji`WnwV`u*Sj=gp_o>A&lpuT@E#-Z
zv`E?3+}>|?Dy3(@KBC{xb|n~{a#eR=Qm6t3@&1&Q4q3dqicJ4F$LF~>upml8a*p2P
z4$@rc`M$ephdutai4CA+k3^<D3~z(r4ADJ(qF4T|D7i0O%Oak8jw-7`TVTyoTUKC1
z-*<|35i7W$pI@`9tE;IBZU%AGiwganM+a-&nVYA?Pk%mNY|k0`y@t=xNpG%7PvNw$
zJv44Cd?9LY^?J)FHYYBvbAP%t@MixDU#p`NdyB0mQBHgZSnu6*d{EzhEQ|jF7r+y#
z`~l`A`ShVhy+7kui<Sla!vZWk@Yj-t#-CX=)#RL=&Z_N`UtL`p??qU%$t$ny9wN5m
z3r>)ULn9*_D0HkLNK-0p7dArm@k@&fXQg>geEMocyUpjR<7Z#9vuB0vpL56uMcDC&
zgjg1Dn%4*y!#`6-(erTs!Ibj&=F}uv^M{UJ%4A65B(@YkUs2hkE5F&VYP5NIQ_sGB
zwWy;@%+6d+@Pc`;%YWNP8V?Wm?Dn1@M4>9@$~ePdD&xle1PGILS>U;)4`cNrrTjcL
z!m$xtXmELIkf|Uf^koIjF+htXBLRvqtg=7#3Te&zxdnp#Sa6tfx5})EEHzxk{$%tA
zX=!S<$RsS*BVWE<hIuTqd2}7!)lBs24U*c(UIxYnp0BS`TYqlE?|m6o>{R~?w9y_R
z9g6oAWb?y|jXGiz-?hP+n1qsiZQiH6ga`y^v9XanFOM}&Y1YU}%!~@VY9D;D6nLjy
z96_TaJ>|~kg@ifwEW7cx3+Tv%Y_#4fj$<hvcgvphD^vAJRxb*_gx#O;e*e4F3rX$U
zfXo7{8)<@6h2d}Xr1Hl*f@thBF@cYoI75QzK1FO`6ezwudFLw(&&YCMveVHO|Gz=L
zT+c2cZrIl~j<F2p6X-T>+UE-1KFjOqyl8ub*wxNO?&S{^70dXYXHR(5hfQalQ?rFi
zzTV6|*huVidd#nU>od@}Qz)hT?L8*J+HO5B*-ygRu~blp-pp)PKiC}@3vJEDkCBH#
zHENe%SktIPo_)ooFVvWDDPU*RO_Zcez#Z3ot4!Gg(u~g)1%)bGZw6TNb`KkX`js<Q
zN|HXbUoC{4f4x&eOA~469na2dq;e@_Pjo&iX=@AUSeN?CboT)EXm<9o?p&4gO3YSj
zJC0^0V!JYQYiP(rEg&FO;0KeGFO|$;|D3P1zlt^7g>gGIG|pWrO#!6LSJQg2akAsK
z>U}*Xc}jKxM8xtwuQ&~69~%bi%5J4XS`QWrB~fiT7EP~2a%_Ex^>S)oE-izfJ$pML
zZO+-?__-@vNRK5F%ML%fdGMlI@Qd>x2krTRXhG;9!H46gIkk^aFa@{6JxIzU%Z44|
zHrK%yliN`rH$mvVWreTqQ$hOq5`~#YOSO(d-$?KoGstLedQEYONGI8C!DR5rHezek
z^Us>ax5MCBZV$&<0UR_XOTh{8G9_qmXr76Ya#XpPh{NcK*wmjzoXqyJZ(oCR$4kmp
zi&OfYY!0_e30Oi<-9J$;4^QSb6pyY3{gHnXY0*%;)D#o796V=M(Xj*ZcdFE??Cj8U
zK@N!mh1~~}2eBhH%dl#5_W5ix34d>~y~uqpl$eDfRH+%<cw+7(g}bhb>|ACG2)7oZ
z0&DjgDZRb94*XJ9mIXx#uU7~e^2t2Re0Y0AFp^VC>M)dH7S{1gL6k*0iiZwMzjUw$
zD)3%XR{z4T6~J%wabh@|?+SvU@U)i{xv=Yy_Zw!#`Tks2dTQiqXO3voy>ZhP;|dN2
ziW%mC*S(^xdLsTx@Jp2`IpJRYJS8O|F+DUkwB+3Ze{goTT&zZGY00V|<|s;~Z25Kl
z8!PM1hcKzj-{=R2M-4zY3qU?#l<#3F4fxx&YX{Q8&Q7P)u$9AqZCt<bz<zk7vVgNV
z-h<*Yk8QjMnN(jdadv5+SpRZNJ_2&%Tmalq-s4b70aMCcpD&&wT}*7?=^Gho&LF<m
zbI+};3?uAbbZ~dpO9VS|g`0x^E=E+<gtie*z)*T<Wn#wrn;<(P`V!lBy_x8Dox3TA
zUs<?p2v?`#r7BZIo3GmF8c*mXP-r;!wY}592G-)+=Ug->IIpo$>f)xvIu^OVscgG5
z^EgMx1l64XqrmC|s;;p7Mi_4J2SajQ5SDOUshvA$)rSpVM2d%J5Oxq2uBN;VW$PNX
zEIdegN9VnmbeVfSZf+Ag^(1h2uDBao_@2q}*V?Di2;6I3y%F{TqcM|uoaAgF**x2G
zVWv$aSZ`<YzFTiS9IjvAfP7{HKiIT0Gm{QVg?#jz_&pMJvuxQ8i-{TE1<Hv}KhvVw
z>5of%DTy8vV-s;R!2@{>nxitpY#%YgEh>v4gMLa(OMB?1H(hWlISY+%rdK*YPE2jz
zrb)j<Ko=mj<5@Z85+1{0Z{Fy#PIg`<v{Y2EtX2!+A<gK&+a|K(LH~j|XR7)&nXfOK
z+v2eyr{B3xVGUfVJ;HuKyRr4?{bRR1W5B0EDI8gf%fdpiFN}9+X+rr^d+P9T1<g60
zU)E#kn2G*Q)%3JtKD%ZG)5-z!6{w4g42Rf?Q&;}=SnK33IQ)&r50&-uQk5bD%`DKe
zym$YW8Zcz4*&}oO{0pf!Hm*7MU^r4n7^?Y0?mCO;tbZq*?N22w?%DP!2z<(2J}>Y2
z&FS|2wESi_DCe)`O3A`V%kPss5TLH7q8xg&;9cV6pL&;v?ou5-D<W#TsEEM+S+QrP
zrfusNspd=)o7wRI{jfs}|25EBPzTXm>LHfe#^l7z-_Ge+ZD%{+Y}7FkOV`=EFf~}e
zs%)FFTryTsR<;pmGH`^s>&DkEFs2sA;PjKfoz<}^>l(A;rm}(Gm7^Wrua9Ib6=-fd
z7%|vLz7(WWRD@)@o}XJ%*T}I(>`c!NxxaXXkAB|fx}j+ZlnATg!@4D&BGX20{eSXw
zRS$vmOtfc<6JA!E403QmHo_&4>Ije0)4mF4VQV|Q%^16n$9(LCzd_*L=0^<C9ibrm
zY)qg#+UhU@=5^^wO1t1Zq@rmAVkHyUa9KBqq3@;pTve4(`sw^Fm~#H@r%#%Lv~rlv
zRYPip2yXc~c`K3GoJ-52Etc91rq~Q}5jUF#ou<0SEARPym+@?5n}vBHMKbs|Vf_bQ
z6E>p)qh#Xw^3a_oH3MeG^`gd$+CTc6UGU1~9&@c8LNa#7A5V04A&2{rh|47^zs%+I
zER*NY`+a)%hFK#};X@$ZX&QxVu5|W5b3=`I@ctX9ebL()Ojfp8oxi1z=vz9eRV;Ac
z1Wy&S>X>B#dVYhviSK^g@+tSOqB-jDY})fbZ2BL9`?oTfwlB)<bdW<Jx{2#9F}7WS
z$gTKq*enmKr-OTS;am`$C^_ftdI6uXy&Z=jkRiI4Y>!nQcgWZub~cqUd2j&A*%2da
zn0;Yt>gB^8fXTf(&-=!2Tg3Sw!>o9d?8ZN6`bX~xD<#$Z{@!KE)9sbYdD?saAZB?k
zhs9$fZ6hNd9-g$q(^aM8YbG(v{-uzSr-N90_Wc)t3Z|Z}t|tlGf~lNAo?5kB3UTR?
zxND7jOf?jY)`hzgk==)r2O`gPnOBB>Fp0PRC0hV_v6_?cv2J495vvf2nXykyTW$~9
zp14&)o#pfltV&1B6+yQ}kbIt3^h7uoW?<le5LHlz^Ab8SJ`JzcZ6Lj=_C$Dv=Wx7G
z{vi#~0U6Y2UJafusguLD-j3a1;mwbZg^t#g6;^W!3mJb8K3EC6OcA}kz@>IO`axwo
zCMtOnaOb@Go}r;XM~8<kE^^T^rOJ|$RuLArd$`2#sv(o@UAgt*po{pl&g0L$b{xLy
z6a9`(Ddx3alK6lndr*6RYvWWm=bc)eOu!qMf*t$C&USopC_7$HW|oSOci38eHocC9
z77_&5dj=6=2j6X?WSv$C1_tR>7#74_JgHe2wf3%~C&6reowgv73j)TjDv`c0>LmuP
z@%1jFjik;ykLXyDRI*~}OE@BMTq-9G_5B6f*(U<tIvmgda_>-%0~x|2wE-B(z`#2Q
z|Gopq!I!8{_nq16ZTSf%`h4vFi&=Ulun1@!0>#Z_O=m6x%G1T7q`R!~u6)L&0AoC6
zP%-}Ifet%{QlI!uG+&o%6DS3c5~VWVYGfWGkW5RHN46G|kEFYwE9gek?JwCrvvgx+
zFy0n<Ip_Q_fuN9HU+#$5Ti}D?wjV)V-FUd>d@@CYvh@f(Kh)|z1YT_|D*myki-tgy
zP?U7Ms#S?pk%Gf|J7N%^M?vY9tBBs!6L&+ZkfZvLtY>;-UZwP->rEUjZ75$O2g3q%
zBU$&7V`el#*GN~k4~o29IeC~zApVNhf?(#8<Q1+9ZZ%KGm;3$eX=;5YIlo=%!wHhE
zS4Gy<uFZ8{gKL|U&iHXvXsehN(C+;d_T<_@_P}u1+$K$?R`pw@mAPt_eZg+6!xKBQ
zQ{wtpH50_|>5qL04x<VQq5XMeF%L{3g6G(%(S)k5mzco;$CQ(~zC0ex1+O5~SYHZ3
z^UT<bii6a2&XS7&M)r;O*KQ3rsO6(W(wcS529wdJv2xH8WU~v|S}!T840|DE#`Px)
z6&MYRa}Yk>7+Zq1%xw)uGgAx*L+{Hvn6<knjAfF)j=myAxmTTd7$P;slH!{KAVg<8
z`}PjYbbTF9#f801$5xY1M(++-u>r5dxn;}7>&F9Xa*nRURchz9#L*2+9F9lYuUzZN
zmG=yJS)dp)8=``yyaj6tT1t`4%R$nfpNOUIvdU;g!24yIuxFW@ch<6kUy#e@JA~oA
zD`4$5N&=|#YqoH0^VW`-`!Z5PoVHz=fAqprL~B7Y!>V|hf>Mp5ySw%lpt7jH^du%G
zP*3S7P6W<LPP<f1_<|63=Qc<1#^Of;gM*^C(yB^lAoVlyFd7>zZ+?y4Tydo9Yq=iO
zyOOMiRxzNq&gPEGzkNr>%&)-vXVZ!Qv<dZJfbd^C8peLO+wPz5ep4kEx#RnC038iO
K^_r&+G5-RBmC-W*

literal 0
HcmV?d00001

diff --git a/examples/queue.yml b/examples/queue.yml
new file mode 100644
index 0000000..1b3baab
--- /dev/null
+++ b/examples/queue.yml
@@ -0,0 +1,5 @@
+--- 
+components: 
+  - 
+    kind: queue
+    label: "event queue"
\ No newline at end of file
diff --git a/examples/queue_impl.yml b/examples/queue_impl.yml
new file mode 100644
index 0000000..a1336b7
--- /dev/null
+++ b/examples/queue_impl.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: queue
+    label: "event queue"
+    provider: "AWS SQS"
\ No newline at end of file
diff --git a/examples/service.png b/examples/service.png
new file mode 100644
index 0000000000000000000000000000000000000000..56fe2a7443a5c2dbe0d928cbb68d4de169a725f6
GIT binary patch
literal 2662
zcmb_ei#rqE8{ZJi{a)^5VNI^pm^4hen^Z1^v=vH|8MZK{i)&g@E?<UjC`%%jFPR}B
z`6~B2rHq(qXtd$C{)6A|_k2I+Ip=-e=X}m{-sgSa^S&q5!`(qjTvZ$Z07yAG+ItFQ
zi(uA)L<MWPCEP|JMA0q|_JEx~qqwOw3jh#TbF#NRO)Owd#-4r<rP=WlW)cEV@p}t~
z)l^1xKdDJve4LqcSn2rgH$ASW+OU*D>%oTTF{6qo8co+IckxDOnZ%{%q0h)60YjDR
zt)o>BKS&gZ4Cz6HbStzg6F!>2%h40+1<X}=u=FZ_uETt~h?B?U^5+VeK)L@BxLO-+
zg|Zs!uhesQ7jcAWpy#X0Hkz{Ezrp?f>KfhE8Pz0nbZKed9UF%mbFXC=Pw!VE?y-=d
z0pq0<h1wanpuf4oLqL6UI-`zpHgHCXM6cZX2#lY;QImcsy+L+>YjI_9T&zBvdMp@F
z{c;-1$nrsyp+8yLrhmR)eBB>#0=QF))dwcLv1X^PPsf@KA;QUj+ZdS0FRld}g-`t&
zOGs2KE@>}6VsX3pI#sk5Fg;p}5TRFDa{*%jX2m>09V8kJpafFgyWC1-C*q*wxbfAK
z40qZWr<Mlw1F$^1@KtI{44Qu~5auDZfwoSak|0{XI)w2A6+9905tn@bd!YyuDkGF+
zS#I#e6BI_5V+=D~i;X|+T6}@hNM{Ad(x6Tx@;zvPOl8fk8sf8kQXX~oF%z{^?6~HQ
zbzWk__a12*;PCkqTlzx^A!OV2wenqk=OXPzAM3XCoVmSDu>xA$ic(n<3YX0l<I68v
z-bnc`;fTlMqk+R;L?a`j<@#tw;hSmW9Noyd_psLf*`XMIp4W>r(;XuhIocK$jL}Pu
z3O<HPihGK1(JJd#26aHv(%Qz?N~^o?>G@R8A-~R^<6?885`;{T-nNlM>BzR70=-*N
z{I}FF+g@w#0Uez$-<Vp2Xo!)mPJOHQd5sHwPklvp-TuNPz_?R9?Nz3}$Jw)UOMU7E
z@O3R`XJ?4<@H6XtWI0`EvM2JJBM_PFUhMtK%BOxsW`oCzm|^6A^-Eue4r@j)`>~hg
zS)QkM?Cn}D8zMg+PS3w-7nqfqDQy$|tC4uUMl5h`{=&!HpN{2?*(If=PQZ{8M%Eh6
z&Sw)x)jvFQ8I)!P;SF~0?vlm^_h$D!y16F^Z<YM3!r!XD6m>1Rc5LkIR7~i85>L9L
zmmSvHdZIeaKM7f+>mY8Dk2K9k`c{D-W@h4Di?$^b6S<fp$(dQzTI9}7pCoB&_!*X^
zB~QTH+?YizVQ-4Ik8m#w7zG7h><z@$p`5ZZNaSL)mVe_fU3iSDfU9~`*_+v?6C%h2
z-sW;+|Hr&lGv)5h7#@A4Rn5@nUgyAb1>YukYRgTYIqA3g)sf24DSZP2@|`<_x01O}
z%I3j1oH+zqz0&7`5}uju2a@aS4I=Q(Gdy;>#+0r(UX4yaCaEHS;hKwUT%O<*?R+yo
zX?B!Of??jfJ}N0mdiQP<4F1@5ku#G4%RWprtZ?tw$=5H;eMcu13B3A`6+6x*at&1C
znyPCS0SF7rVPEp}@Oanv40@f%647&4m-w@7m@Tes=m<U%eF(rBufxoLN;LFuNLyQz
zl2qUO&+qkaOWapQ{M_3+6qEx%GbZFvFQWM#jiw>+B9zCwc!?D_Q7=b~3D`Ckmsk|@
zF(w2Q3F1%~AEU{gSXD4H+fM5G24r9;?YN)lOE){d{)hxu;s}J`_O#;{gPXfM@5@wP
zKq{X+d1~(=gCt}!hqYy9UMFmFb;L$s7*E%X!&E=!#~7_<R*coPM-&bR#7e_pF#Z<F
z$vLL|SgFkJ-C#qSR{jyvRrb#Mumi-vV4qQ#>y!7K(O@x%;n9|ld08xAS${1yUoWFw
zX~A(NK~!eBccx_v0)^@yWU=3JKA_Q<*{+_+JEIeKF&$}T6%~45F#oUS^PZk*MMV_k
zIrh|}wPg))a!yX(#)gAN03|&gz0DU9*!TABSXSQO8VH1zCUIs@hAJ|C+Z3?;w%Va-
zOVwQ2`>Cv7aveb|sJHOMcrBLr<N5V(bMgP&(~&#vJv_5;8Qq<ISi1iy+}3uo;>zke
z%ZD91=$2ZG<=x87J$W%G48z~J?@dbE@i}uQ2e7hIwqrA$`?`J~@>X$Gm3-Fo$qcIi
zBzvj}U_lyda2;!k)fVtTp!u<@b(!LV%3(+|R#6#GNdf7?xDs<cu_d2*i&NGh@@xl6
zUQW&n)jX%w{jyV*DWZ>x4^5y8UMRrXMWY$JHFNW-vvWnE@U_VX2{N6OAZ~MdAbf_y
z6_0xH!sw*0@8G;D2Genmx+QZYY$C0>+4%l_Vb!Kr+gt3m>FJz-0dCpLmr=x*4Zk@N
zIG2p?Uj6m6*lu%SJc(pw7CQ9i1pDGNy>~>A#|{+Dj*gCe%CWK5>R!5YV|3l;=UK+4
zrcVF{g5c-{i9#R?f`a%Ur%2zJZIYS_^`Rf7LQd(KV8_}3k;_Xc+)tJ4gXi1?;sCUK
z<n`>S!Z?nvVfLz|>VOtGElpx+s;Q_apWqP?Ul`C76aEvup9<gfuO4DB#(m!y<Oz$>
z!SEOn%zMe^7rlknJNpnjdvD)9PV;X}wOR%}a#KUy)j~K?G+TZ_GP=ICu<8gGMym#w
zCV7^6Syo~)nqSw4bE>Wk!Zk^2k3=(`K{y=g*SJ|PvY&Q&m(^9E5klj~$Y(Vf8G;_F
z&@Chc)z_CvWH)6fDl3ojh_Qq~_LQ5UZ{~+2DPOSOwi1B=TW(l%S2iw0#qq((B%=Vn
zgPom_PtBEsP;WY_)II)=8n?Jjo(Y?d>mGSc8L#WOODgEf!uZnpJ)uJ?iUS!dEAdOy
z34%gW7WymCbe2$Hf%`zG78C^Sw9?+JRkm5ad+KER=jP9kn@vK8R&!nTL?t&=@XYO!
z77Q-x<$BN*HL>41Rus0d{Lsk>O8nUlgFvm~dK3_suX|54MW~pJcYXKE>Ml|k7#Q&I
z_n%!dd#Z%rluemPaY-(Apahn<Q&SonOY9;@MkMsnc)sI%iq?XF^bo(Go7hQtB%AUD
zB7!E0C+;n@(@rY=chrD#`i7UA+d%|BeCSUTeULMpp#N#8_)Kzf*}Pf<;o9%RoZ~<G
t&mujf6yc4a%U<oU<$eDz`X;u;t_-KCC+~jnRq$~HI30JludoZe@gK_G=+yuK

literal 0
HcmV?d00001

diff --git a/examples/service.yml b/examples/service.yml
new file mode 100644
index 0000000..705a759
--- /dev/null
+++ b/examples/service.yml
@@ -0,0 +1,5 @@
+--- 
+components: 
+  - 
+    kind: service
+    label: "μService"
diff --git a/examples/service_impl.yml b/examples/service_impl.yml
new file mode 100644
index 0000000..c7f6080
--- /dev/null
+++ b/examples/service_impl.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: service
+    label: "μService"
+    provider: AWS EC2
diff --git a/examples/st.jpg b/examples/st.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3e103a1b30fc0187ec8aa2b643ce019443217356
GIT binary patch
literal 9419
zcmdUUcT`i`wtkS_L8KE90a2QQgdP+T5D-G|MJXbo_YNXbq<1wmsR5)zD4|K0E|AcB
z2k8)sNciD7$2;!3?~LEQ@4xp}#@Hic?Y-w*bI!fy{N}eV$1mprR7&!S@&Fth008Ie
z2e_O9$O3S${TjcnxK{&@0PoizA|SvgASNOqAtoXwCLyCFBO#?AB_<}PCa0jJqN1iE
zA-hg<or>n_Kh-ZGIKSS+#Ur|Uk&2X<^lJ8hI4-{csEGinI6zz+YQQyW99(Lg%XR?k
zuSF8#{95ntfrE>OPe4d=jfnW_z6urKN;3`~E*Sv<AtC<NGdO^2R}WAV5E5NyrxBDP
zzQMqFOI=GhE@^m#R_uk7TOgf~rF&%y{bL2qm)UI`oWb!~<rNP!oZl>7iDSM}gnOm!
zpVa-5hC@JjbyM_eT{ze9ui@e2;$9>CV>vk2aH;XG)36KTtKSfMAam=5Q($IXc?$vU
zV~qt4PFd$SLwlE#05aUGMN#8Y10Di?7Cv%Fp<860-IP=T?TnS#Da<C>ZrlQ0<FO|7
zA&%BXZ2z33Rc!=ST2v^P8~9{Mu23|-nG3kP(F8qg*Vyra3v>ldU(B&L`rtKVH8e9Y
zH0_!@!Yktk9yoIh0ncHf*jLhKCngzAR}UuC-agGf$3>Zp`<os9G1V@GQ`3$i%)bP5
zpN{-7)AohU7oz5!FhSV~J35aNcV`8hFZ>8XrGNDo9)nL?_m)!vqV_IiHX#<KOg1CG
zRC(e#gl<x5_}u!32oB$ezeLdg7J<Y3r--IMMU?Fk%~7IQbB^Wq^BSd>RE<Ml%b)sx
z!f;pIivn$&Fgb5YT@!7?5Eg*re633%wIlCe%u_e9<%1QsB9>IV{W??Y|937T=C$;n
zcCh`n1Lx!qJ7RzSwu8Kh`<ES|f7wC3hd)PyV$Hq;aQ~iR4%`h7C{vN!4qCnahj(IR
z9m)3xby`4#Klgmw{|v&q$3xL>upxf4zw?N1`~Hpkt4M*P*P71kH^)JThxxf|oA9vQ
zU*RgPF0Id-76H<7siKdqy+*3ggX<fcg|{f-@y}?6-kA$nu`(^SbacE{y$>ge%SeiI
za#|kau?jhxmhZMkNzU3LCwwxaOJZlI)XZWn^PXn;md8sv9^c0*74D#B-pTew2amCg
zQsLnM9{mTGSHKI~<doxeNi}$bT9-DEKiptkwhNoO7sm-<H5)_Z8p<Hl^&)>3ts&gW
zLcbXgo;W(hRE(UzXq$rE(OLwHsAhZw5(>!V-z2&Qc>Nz-hI|g{gItY2vq{4WS-;U%
zfuG3x>$r5*6UYYGQ|tiuj`afU0=GltR032ILO%kD{|BPKogdeSx&jL`_Kub&4T>{2
zZ#_7uOm`a>V*c*9)Ye4MGq^oUc`#d8x>2Ea$dPH;1&VcYwB}=UWC?MK58N*gA2O*9
z<+pIseHBjP?IB5-RO2ry>~-obm;oKSqo!<KfAMg7Wu)DWQH3Y*)_dQRpOzeQ-jgio
zxDMm2J9jsxpZXTp@7HAmeZdTaR#2rI*C*{S0g#g$`#^b3rCg%iIq)Tb5u(%E*_>Y*
z!kicJDJRFLoNs>ysVmszI1p*I)1!LhhGFDX0OSOmZJMu?rTwZyVWwbq&Njb?&L!{P
zMib}L$)S{FhMgL=B{pCbZAYn2ospD^DQStFJ%5+#;8#(3?$3S+kWJFQ5K&^aa22Xu
zE&ESGb`@3JM-F>Vb*resEm6uthF`7)NfoWtxs!!prj3?-8k5-e$sV58X`7B%WUea6
z+C<xMqS3?OH2Mt<)md)r-S6hB5CauGXB6PX0O$+EC2zTI^b{rDESc@T)t!epjz=G=
z5Tw_Wy#La|8yNERkWq}%fmwmZe<-%7;BhXOSGN6w+{H3tWol;bn!CFb6ZH=hxb%+`
zvhJM(eA;GuLlWNQ6gJLqTy0M|wm$pF_QUo9myZ<qse*8FdpVGUIXJgeCq;eor=7n*
zsapU{uF0-ytB0_c1zAY7F5BBBd-p<tu9?9>`npt+f2sZ#%{{k_Qy9ku7?qQtRab*N
z(KW$hXD-6OuZ{>yrxXf{MjSb!NZhrLY{M0S-<qX_UPMVl;+?%i?S(SQz)Io!at!uS
zQ5|jIJI2PJXZXjew;h`CjmM0vl|kw8mjF}mz$(yB;0E7|VOTVK`)pJZ{@~ZOudGUf
z*&5DH%C6c9d5h(=xsR#5vipw_^)(hv%gr0O^4O>-6NjVL!QpCpZI+OV$9n_xWR^K%
zuVrw7wI=IYgK)d<0BEOY25}yS-^W9zam=sY`Pm3^P8kYEcbL@+Whqh6sCCJoPIuN`
zAA2!>eIzK9LIG&glW3(h@t)JkPn7nJy4!-KfT-&6ik;sWayiayQY0KTCaS;nejN%8
zGCIC5xJ?6sQ@GkYlE>nX8Ym_1VeWPbCwF{EPl#$6K^LnIonLu40eL<SXV#fGs}mUp
zaRLuED<2sSb+`7sJ{X7^SXi)$2mx?fRr1b}>r50Mp3?<bbZu;I)EkQO_S($w&U|*U
z2lwzp5dD(5Zo$n@jcyjZCOP)=Rmv#}zY!p)ssePfN(<cE%;0AEfht(A(n!f~YznTG
z4i4*_UyH~?XAM^-YVZ1Q8;qW;jW=(So5O`0K_Hcb#k(EW3-HJ%C%tz&pW52tcj10q
z=|yOhXy#9b&$k6{oJQK_G6^=B7!NCNPAMN~8{Rwi>By{^a<j3_bTPqxxKcd5Zy|O~
zFep~RtfX+LDQ|QcP90hhoWG%?a~0EFGZD${Y>mnJ#_`YDMVSS79l~A<j(9<1$8RbZ
zoV1*(lDx0?)3@DOE;ac3wCsD)ywJJkqw({`C4e@3>tTKv>Yy?Me@uvZ&?!4=r&{~G
zgYY8tcj`iSfj*?8g=czoZLt`5F@D;aHemh3iDR|K7-EJI95^lY5Y|ktu2BdVpeTLP
zsrkix!;I%lb8f{IjUB5KKzr3~PFeb8sW5wtln7J2hUksMM!&8m?^Oma$394%r%=2j
zpO~1KFnx?55o0PVW*REkH|hDw?YHwD9LcPzhfwh~lp01DNK_1O(`vGyF$W)h5aX#y
z^F3Ovt-D}%<i7dbN@}zK1*g}5>h`yu&jn;ocPy4Au0(b`u1H5h1$B}AoLJt^eAPQx
zxh8(nLb)t4<L4PUbmWj{hJop@tn6?)45qQ6HN8=4thph8)a3~>oqE(6rGxr}9g51q
z_7#V3IFI<q7QKT>uXyE42u(aYEnsGJ)gV+7GwoamNr-(qAlNU{3A)Su@!q>j06tB&
zGULe7U7biego20PSX)QJbejDTGDFV5-Od%(51yGcNiIxZkdrsqFn5zBU}JE?nZ|R(
ztP#c^XlEK|bNIYOq?}O~qZ}LMOGIF>H-(E!cTEO)7bcIJA8Ht@MxoF@IMlVITZCyg
z`E`{&LdJLK74aplUSHp%ByzH~_j%1-?EU#M=vHZ!85-M{C=pGUEE1`$+?jM&rq@SY
ztT)ETc!Ci;qGVj+y{4y#cP}@$!P>yb4*Yz1HX}NRx;Nc`we76XTt_gMGBKrQ-Q|vX
z{<kj+2_A_&bz(n@DQEjSMXYlKoQ$f_BH4)VM1@s-6l8uzN2_x;-Ux(+MM%{kzNC^l
zucYVN-ztQvk{g&Bo=AXA*_6~u`GhxW(Y{=K+omEX6T)XdX{?5jfm4zVhKv^Po1vhL
zVZKOVCuz!@?1bEN<bB9AwN6My(s8dt%d$iW(2dE>XjEH)AM0&rh#Bv3+Xl}D>2LU%
z%e*MA*O=lc%_|HE6C4qR+la9+tqD^nQ+XYH)f#egT~nzSwf9$ekf$2;4Co6~%vZ7}
z7dM$B^)Td~j;k^d+u0l6so1bnv$@-zpoyMXiAr)mY5YVdo_p%(xU7&k#|=~Sa#0Yf
z84OX*)$;VviT_Mi(p`|ZB%C2-=U~seGWF=89yvwVcL`l(H{jkA2z9motwoO~T=NHb
z!KqSuEAa&#wcOlt#)i>5)Ar_@Seg#yFK2x9lgG1Tvtx_r<F)Grn}xz1WN4Tr(%(vO
zT4yymjxf>7>n4R?0BrSWL)BAHDVLucn^t`xA|BSn|K)FikF@XH&n1`Qd@MP(3OfDQ
zmgc&GBfU<|#REOfo*S0{SYdNs_Z4Ofeg79`Q}23J-Qfm11G3na<_9JY4-h7<e^9i6
zjFYAYfcS=;di^5OyyJ87YxeRcO~!niTlBIt{v9$P9Q6CfRxp4HAY|)|GL%I<fqLl=
z!nPR6S88`h*DOsNTrUCrziW4Iw9PLl*ZCQQDG6EODlt?!J5b<$ViAshu*f~Y%KSze
z-Cuy(7|GudQ>of^BL@ALY+Y4CKKff1{4*%TU29sWM=e1g2E{DN7q|Tgi-Pcq9~uX-
zH+TSlOxu1wiB35y{QSc<QR?fupHu&fzfY9^%~rxe<8KcOI{z{*6hqCFuH&+Pg(p3C
zz?j+z-CZuxLv7uoi923#-+nB?TK_<)*SfsX)cOd5jIySv1LP$@YOmta9-jOiV|GsW
zwNR3;8iT};@_O<&o{?ba#*_-T{fWE4PGO!6XB=9Ppw)@}9^n32s?S3Z>4RHuQ<Mgs
zgH(-n=#_;%NIS^E<g#hpENW;GcTlktIrt`kr3&}hibVTXHm}@tGrfEo(?A-dIDZXv
zFnUg7z6a)IVjiBw-2hk|ZJ-H4IjyQy%6kyY8E17DA^dK~BK)}cZWUZ$l%GAf$Seg)
zZG}l@Jij+M6>P_(T2zer$(w@ozvlP21m-@edOWodk<^TTHegOf;fa?@mTFOG|DIba
z{D{g0Hu_%t3qVLw3<rlFp*8pxC6vegL}Hl|Kl^Y~S#sRi+3*MpFW(H;)zKHAM#)cD
zhRrXu3^kNbBlp`!1`(>RD=L#uBe@wrcf4m!#}$OrC=3TCuu&~`WdNaczVUU0+Qa38
z=9@2UvRNSb^K>!dhj^9rG8or#!HQl@Qih+7b%OxO9dN<Rj-l;g!AK$Swhf@$Netk1
z@EV?rocs=thlQ^ws|(+hc)Iwp)CFgg6Sr54cZ`vLQc442(LDsgn>HpJ>i*(s{AJz~
z@?ojKbHpfpcDen(G&#PQ8QdSKb_#p$mjG7KFZf%qVkI3>W+58AG-nu<<bR+U0MZUn
ziNESAC`-hP{`_J=CX?0(e(ggAne0uoyaoxI*c_P7N@PMqM&wz{bMBigEUdZpMDy9A
zno-Rzn*ngE5V$N2pFyMK;|&+v_2O^ZlG4~{tK6cT=<w*co$w2Y2m7#4DMt=Sz=Qj}
zBw^Tr<IQL#+9YEexch01L!5$U2pEHZM_D+xQIvwkuVU(L^62r2;6?JR@QP{=2$bCA
zm=$*vKf7!PlAL_zC}E8hVv>N#3r+;P-=@)Cx_j>k`*j`DAbks{6AazA1}Pe!BN*oV
zPnL6rChdow*KUQZSl3j;N>=RhEq%8Kfsce`PUE^#%I1j%b<L6t;$cNO#}EfpC0oSj
zcW{(7I%$bff#=v1SZy-pE+`oxoN|QGYieW0oNPp@<_pO$X>rigIa2wsuX{ROnD!g9
zoQ;~^HmzZ694Mv_*ZY8^#OlgT4lXpMG-LHk0|LtHF}v%b!;_{*nTVJ04V?@6Z-jf{
z=`_*OtVUvo2c|%@6kQ2h2R!9ri_KZ_u7g9tS@M)o@7VLBw(3ebXze-@#@lhe?(N0>
z`eY<qNS<W^H^}nU_o((4Ut;fjqfb5Vpc=G$Y;x}ysCEQdI8W?SL3x>7FT#d8_|%p4
zp~3y1YC{zU$vpU~oE`C^&0&?-bLkn4=hk}IL#q<AEgjyI!N(H~gnG%1Lr84g=yIc*
z=DQ2p*^_`o1wJ3s_2=jLI4T)hPiPBx6?d8MjYl(cI?%4po!m#>Hi)Vi|Ed>|(^Ak@
z7(-gWCE7GIOwYC>L5Z#HqzjpSc?sB<+V0wQPO{;`dYm7g>-D&$Wyo#<Yt$z0CEfT?
zSpKXBW*;kz8XPWrJVA*0YV87}OaX_(Gz!Qh6Md3VQQ~9j@6BE|zs#sY>j?wx^4jlM
z^9$_SME&6IXCPaM$&4!Qx{(7|>SLjJRC;GMKIzHKZY!;GN1+|BVX~g&V!=7#uqest
z%i1<*UHeopS!6;;)@@}@KbD3F*yu{hLEyzBlIq@eMgEd%3(>uO2On@x1in~`6|-#J
zE6VJG5>Z^vs?qZoeTgdTFfrl<o7%L{T7Y0ex0fii3T;APe?p}T7lpjvY7C!=`(`j#
zSWqJ2e-3B9p;IHLFY_ulom)A6mJrgph!=Geb7rEMD0n?tSy9?6poLFD)g!{lC*bym
zo=WCF=k)*Ic5VK(UH3=+X1m@rx0z<qV=+WI#Y-=P>lRRZQc@B`UlTAbuMV0n0TRX$
zm3>-?W&5teLkjKpJ@p6_rry?rogI>&t!J}{MP+9%&vAM^^!P|AFem^I92Alu>Wvm!
z97>2Tv37FzakcYjImT^uCI-rRddhiI3YeP=cU6hQi>PDOh?b&nhsZJO4WXFsUs0#+
z6J)KoL(}D^r3P1D6TP_Z+Irjdt$EB_D>iT3?z}wLEDz0g3m}A##ROGP2UfhHv6TBR
zW<i`qg%BU-6$)mJd;?1tvqz8CZE){~LGPq9&2Lf31_jy#QixL!4!}u1veC1PSs9Jz
z4gcVIuQH}Pvx3x_-tiD=?|~sJ2DpW!_Jl!EHU@;$o50VLNk+p_MRCh_^F?`QDsNic
zZ#7z9G$*aAMSQZ_)lOy&qySXCp;RaRBIo^^rFs78s;gfsS!es#ihT5|BG+71<gKfU
zobiu}?De}M;}jq7L*WUJN1+7$y7+#jnQnY#+KTkVuKPi;V}Ko_x;KdV9E=t?0~?c#
z{ZPym6AjE+lAICFp!OS`GnZ`C(V5zIqfOo<7)3pqz5VEHiqynq^2GTS(CeJ;71v$;
zdKNygn08^NhQ8(r;wq7^Qp;3{gH&R4r?_h>W?aj^H4cYESGC#=Iq$hTSQO!A#LF<?
zQC0PXq-JvNq->klXy)?K+Jf|Yg?W^1Iy$z7t>KvS<n7e$>-)f(Clernj|I7JE&=x8
zJfsodnIFK@VhQ7T2}S5ZC640aT~f4Cazu5iYQA7})63}M;ryNwo@%Bn`_z;~XN1Ly
zT}ESC!i4WTw4u`{cxnE}WY0OX>^eVsuvhJqiMLrY%;}Q>qpo&dE#iZ>9<h6t+2xe(
zgM19n*eN%V@o&vmF_tVn;>N``IV-JKKowk~1@+Me*VuRqeU}3nxfs7JjV^A)u!rkZ
z#3n~a*1vxK+KU3QA}+3$YKmxfX5bkv9(K}NO;A&-?%6z?^D#YmDUo+*_`D2lyge$B
z(jg~iZAmM5P0@K?+^UZvfa`0Q8PAJXN(df%XVb+xs{x@E2uI!<@eG<Qm+>)%nbB5x
zNB?hC9d&XdMU)m6RE-4WpIlWx4I@em8%)`Z+U%oKUiX|_0uZ*t4b2pXh%LtN2fC!W
zu6^>??A;1qo@%T#qH=bdyK|4Flsd?mq2+@`Y<V4A{`j2EB9z(i-EzrXen%I<*I#C7
zI?#i~>Xe&GLY)l)`d*sV`Y#)|ku`L)KYcsx`eU0CkIHNmW};wFL$`3=R1j4!P?PP7
zE-~j{Yn>lsN%zxhZ9y69%5|oJgh!Chy@*B_<dm$utz-$YuEOh8V|}(pUviX_mrZ-K
zNjhH0fOO`^_yQo|q=<SmJQ|nMBuNA#l*_#DR=u0hyY(#8Ix@F<QzA;i0yd|gr`HWF
z$o^PK%*f%H?dkx)?LhaDQE9z5(ApSFzRhSU-=DMViXMU3d!CU-sFtB>_zhW;8m+x0
zT{R77OqS+4J(_NL-UmDfgi=vJ)K`+WDKf*0BlVPy5;db8KvPEU%IN{uu<hG8!qx9e
zBnYY%Bn&y))>97?`0?I;h?)B0nf>smLYi`};=+n_hP3sWzoWnDi08$dEj5$sOjDcp
zYTYV1FAFnA9)Ob2;N#AKO2P7#K5Iso*B*kspG(u}d?AJfGGk8Jo<jjNeaWK`%N_LT
z&xrRx<EohlIVm@^-Hv8XcsI&b_*%JLHJ>sMTSQWQQw{?LmA~2qI*^VGYsU8-Y|T_B
zAh6SAGm#;KJ_slY-Sie>2tC|5VE!^jN`PNX?C@~gm{0n4vOsz<@yi&O;RL-+kqsco
zIDbz5N8YzGsn#yXx-&<69B=~~tiXWur}KQzGT~Rh`+O$CINL~9Yc6l3W=52&F#j8J
zNf~=Eks{3RK^n-98$2Hu*XQzG|CJk0e7ls$t#n1pz8cjHTWpkF^(8>FH+kkEf@G@g
z2qX709u_iJ!15xez)h2N;ZD?G+Xn*Kr{-l_Ywy+c%hK#UqlgEh^|U7>^LAgJ7^kIW
z%yT=dewvJ03};Sri&5^-v`0+imq2@9vth)iu+}GbHmQ0ndk<nEQut)1hQ+EN9<`iQ
zcD|@OL!aDMl?hP{J+IqwG|Ia?v9#L6KPFz%&r&K&Jbm<IuDL9Wn0MP#sX=Kdws^z|
zC?hvg5SQOADcTobIaLN-wNj?}lp8|WP&d>$N>7s-E0{F#*11FOoMRaJLE2|0&`(t)
z`&0}o{EvnZ^hZP3<nw2~#diElA9j<7l%jrwEzetNB~Q-O8(DpSRHdz*;kXu@6Frn1
z86#93rNR{M7j^M~`J$elOr<nwe+FcAo~)vhjZm!|y4~SlZ^-CO>xg#J9Qk^e%N9aG
zt<)v?uFsvwaS&RO_DZ7wMm%+3+kznzg>>3{dt0GjJlR)L>^fXwGi4U4y4CX?T8O4i
z0wsGkE83M0!F>Fv-!OSGOfZouP%knBNF9FFNWUeduJ|zcykbjNKiA*}J45$|VttRU
zok;q*UCTWc+Yzl1?F}7hnw-PuPeb1p-$*Da$Z?Lif~kCS2ROQ|-Ekjvi}Ox?2m?ul
z4;W#W_tUJ%HN-+g@|JjZ7wz)mn{0TwdTTht$z!$kOEE%I`gvAW=;;h6r;@58blFkN
zQoM*_I}Xc}`MBh@8e%?;RDa&t(TOb|!%_tr8J;?{94%XjdqhQroneZL{j&^1Yn%R^
zrVjs+_e>IoNg-L*X0)-$r<S(m46|bdu`(@RZ(@SAnabZJzO1%-2sbZyQGm`2i%8_*
zOiP1RA`v5UU21Ajn~;ymA-z6tro7^B6O4*bh>h<lP?NcPu|BsF>sd43&@Fwe);h>J
zM=@42z6#+@=<X_ahuapt5rN!^*D253#br_LdJx^0lyx^hm)rfxhn#D;Oc7R--puo;
zNK1ubvvN!bJWtAg(F!Llef-oZ#ElHUKSrrdzWJTvTHlJ#E)vnaT~kAt%sp3Z07GId
ziYuY)GBR?Kb56PULr<11oE@kyj9AXK_Vs*K42}xbKPL-12q6vy#*V>K-^mq#$-zgC
zQ{QdAe}55|ScNJRU)kxDf|~~iaaz;{uc>vMdfQV+Brd1Lt6)omPhQkB7@w<}+A%Rd
z+W5iUDIhWxh2&NqVl<E1iuzLb#hibTZ&^Tq7vGffb<4shte6tXF;WMT5w}t;*IBA;
z#9vKr>VrbFJvF+A>JN9HvKD)LzdSgSy7NH!>!M3E1eBL|&GnU;jhTrTO2<o=n3tE^
zXL5V@>yKpeWa47)JPA^p?1o{Kx_FW(hm1Ca|4s~$#d4&srKLTCtG0zvPvTY*nFd^W
zDI)rySFCm_*h|#s*oc)w5_N17*fim$5>3rzd}HRjE*q7DirihCC2mACx#xM<w(+z*
zQ+BB`t&Fd_yG;Yz!|Y1a$8z{xkF-Z85s1bbBG|Upi3B|zi|hwRwxqSy>4U=}H1b*D
zaL2HQ>3;20Oz^#C!ekyd`vE(NNhT7>qhaaz5bo%}*TT{o19V@F$C6!cx>>B18^>(i
z@J@UIp_+=+oLaNtp8Y<x%2el)UpbRK3@M-7wGUaGls*ZWKZPk<l7ERUa~|+ofTpw7
zymh^+Rdq0-)O+>SQa-aXow^ri>yAX58l9)16V(;?mD$&XGq-x%2x~}_(D}N?Os-aZ
z7@?e*IuFC~{XJd%qv%fwYTbn(mC5j|JV}@0DyLyh<ZU6*TJc>Ens)-6qMu`1he9_n
zvs{bini|PQ<rNi*J5%*OjZKedx^=cQ&_nuF#^qx~soVT&+(`?eG&p2&3r+UUxPyI}
z3OPM#Ed1Q}<Yu-9TgMLgY#P-`twF}C82js5V<)Hi(Orht1uoFrk)R?MHfH24U@Oa5
z?RDZcR8s&m*@r^J#_cuO=JmH}lNCDFE0u^5Ys8Lc|1R!wJkc^tI$Ghrc;A4hB1@-#
z$BDXKhe%O3&5hTOd{1U@*6OZEEP{U_vDRw84xAYBTr37*2YwSho4<*kzd4g6dQS1_
zb@=Za?15u%@zn5ea1K{50ZWo;SM-4c#$5Ns#S?jWQtFvNUF>Xq1lg`vMJAR#^b$bN
z^A|&9_ZtuYb4&Bz$f-a03BtiCEZL3+;$92ozTPk5>(_B=%hlPLVTEzFvAgV5sjm9Y
zCFMp7gRbFsigAirv_#_%B?P@*U8(Docg_}Di--WL4y<jFCtOig$VR_BSjE2L=WVx&
z`;6-|HnuY~=Z}0?4Hj0V?ORZFgT(4gAT#as@73!|g?=Xf-$kzw+}hiGkeMfVENxgp
zeUy8rlJZ0P^-t(`%O@r$&n^KIMT0+q&4NA)Jmh+@;IWyJfV$E2HLHFTPo*FoPAP{e
zxVJRoL{=Jl(yGN&&c5V7BRPa9MKT_0wxF2GSw$~KE|?8{GBZF@K$*|fO93+vhumtA
z9A^ddo8)>i%-9WVL~-K~TR((Q4chKGcLF&ww%ZBALOmsdbT~S%ObW>Q?%=BMPvYne
zeX<_H(kVWn!}gnZGS-n(Gt@s(du{|p3Q?DUE4or{bap*v6&`eDmXyOe{D(mG$&-Np
zBl>GpkL+xALVW+S=iGHyVYF%8svkmp<({yerk#|F&OhA!hx>gUQt|@aiopYeus>q9
z?qO1+47M9J$5PDw8O5s^QAM!BD97$qTpRY12#O%)$PJ|6_d;~rZbe3v6qn3rnzgi(
zdbpv`<W8r3J^OfnIz|eaRNmrLH(ihd0fHZxu&&Ava9^bcBKxNR!t2C5n+(>E^>ZG(
V(da0w8chFNiuu0~aRHYT{|^-v$}0c>

literal 0
HcmV?d00001

diff --git a/examples/storage.png b/examples/storage.png
new file mode 100644
index 0000000000000000000000000000000000000000..c945571375a92265baf1c0bfb6844b8216736bc9
GIT binary patch
literal 2757
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

literal 0
HcmV?d00001

diff --git a/examples/storage.yml b/examples/storage.yml
new file mode 100644
index 0000000..8a0870e
--- /dev/null
+++ b/examples/storage.yml
@@ -0,0 +1,5 @@
+--- 
+components: 
+  - 
+    kind: storage
+    label: "*.jpg\n*.png"
\ No newline at end of file
diff --git a/examples/storage_impl.yml b/examples/storage_impl.yml
new file mode 100644
index 0000000..dc539bc
--- /dev/null
+++ b/examples/storage_impl.yml
@@ -0,0 +1,6 @@
+--- 
+components: 
+  - 
+    kind: storage
+    label: "*.jpg\n*.png"
+    provider: "AWS S3"
\ No newline at end of file
diff --git a/function.go b/function.go
new file mode 100644
index 0000000..5642f20
--- /dev/null
+++ b/function.go
@@ -0,0 +1,38 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type function struct {
+	seq int16
+}
+
+func (rcv *function) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("fn%d", rcv.seq)
+}
+
+func (rcv *function) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(comp.Label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor(comp.FillColor, "#abd9e9ff"),
+		node.Shape("signature"),
+	)
+	el.Attr("fontsize", "6")
+	el.Attr("height", "0.5")
+}
diff --git a/gateway.go b/gateway.go
new file mode 100644
index 0000000..c61ce98
--- /dev/null
+++ b/gateway.go
@@ -0,0 +1,43 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type gateway struct {
+	seq int16
+}
+
+func (rcv *gateway) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("gt%d", rcv.seq)
+}
+
+func (rcv *gateway) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	label := comp.Label
+	if strings.TrimSpace(comp.Label) == "" {
+		label = "API Gateway"
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor(comp.FillColor, "#ff7f00ff"),
+		node.FontSize(7),
+		node.Shape("point"),
+	)
+	el.Attr("width", "0.3")
+}
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..65e2863
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,8 @@
+module github.com/lucasepe/draft
+
+go 1.14
+
+require (
+	github.com/emicklei/dot v0.11.0
+	gopkg.in/yaml.v2 v2.3.0
+)
diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go
new file mode 100644
index 0000000..170565b
--- /dev/null
+++ b/pkg/cluster/cluster.go
@@ -0,0 +1,65 @@
+package cluster
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+)
+
+type Attribute func(*dot.Graph)
+
+func Label(label string) Attribute {
+	return func(el *dot.Graph) {
+		if strings.TrimSpace(label) != "" {
+			el.Attr("label", label)
+			el.Attr("pencolor", "#f5deb3")
+			el.Attr("style", "dashed")
+		}
+	}
+}
+
+func PenColor(color string) Attribute {
+	return func(el *dot.Graph) {
+		if strings.TrimSpace(color) != "" {
+			el.Attr("pencolor", color)
+		}
+	}
+}
+
+func FontColor(color string) Attribute {
+	return func(el *dot.Graph) {
+		if strings.TrimSpace(color) != "" {
+			el.Attr("fontcolor", color)
+		} else {
+			el.Attr("fontcolor", "#000000ff")
+		}
+	}
+}
+
+func FontName(name string) Attribute {
+	return func(el *dot.Graph) {
+		el.Attr("fontname", name)
+	}
+}
+
+func FontSize(size float32) Attribute {
+	return func(el *dot.Graph) {
+		fs := fmt.Sprintf("%.2f", size)
+		el.Attr("fontsize", fs)
+	}
+}
+
+func New(parent *dot.Graph, id string, attrs ...Attribute) *dot.Graph {
+	cluster := parent.Subgraph(id, dot.ClusterOption{})
+
+	// default attributes
+	FontName("Fira Mono Bold")(cluster)
+	FontSize(9)(cluster)
+	PenColor("transparent")(cluster)
+
+	for _, opt := range attrs {
+		opt(cluster)
+	}
+	return cluster
+}
diff --git a/pkg/edge/edge.go b/pkg/edge/edge.go
new file mode 100644
index 0000000..afce977
--- /dev/null
+++ b/pkg/edge/edge.go
@@ -0,0 +1,105 @@
+package edge
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+)
+
+type Attribute func(*dot.Edge)
+
+func Label(label string) Attribute {
+	return func(el *dot.Edge) {
+		el.Attr("label", label)
+	}
+}
+
+func FontName(name string) Attribute {
+	return func(el *dot.Edge) {
+		el.Attr("fontname", name)
+	}
+}
+
+func FontSize(size float32) Attribute {
+	return func(el *dot.Edge) {
+		fs := fmt.Sprintf("%.2f", size)
+		el.Attr("fontsize", fs)
+	}
+}
+
+func Dir(dir string) Attribute {
+	return func(el *dot.Edge) {
+		if strings.TrimSpace(dir) != "" {
+			el.Attr("dir", dir)
+		}
+	}
+}
+
+func Dashed(dashed bool) Attribute {
+	return func(el *dot.Edge) {
+		if dashed {
+			el.Attr("style", "dashed")
+		}
+	}
+}
+
+func Color(color string) Attribute {
+	return func(el *dot.Edge) {
+		if strings.TrimSpace(color) != "" {
+			el.Attr("color", color)
+		} else {
+			el.Attr("color", "#708090ff")
+		}
+	}
+}
+
+func PenWidth(size float32) Attribute {
+	return func(el *dot.Edge) {
+		pw := fmt.Sprintf("%.2f", size)
+		el.Attr("penwidth", pw)
+	}
+}
+
+func ArrowSize(size float32) Attribute {
+	return func(el *dot.Edge) {
+		pw := fmt.Sprintf("%.2f", size)
+		el.Attr("arrowsize", pw)
+	}
+}
+
+func Highlight(ok bool) Attribute {
+	return func(el *dot.Edge) {
+		if ok {
+			el.Attr("penwidth", "1.2")
+			el.Attr("arrowsize", "0.9")
+		} else {
+			el.Attr("penwidth", "0.6")
+			el.Attr("arrowsize", "0.6")
+		}
+	}
+}
+
+func New(g *dot.Graph, fromNodeID, toNodeID string, attrs ...Attribute) error {
+	n1, ok := g.FindNodeById(fromNodeID)
+	if !ok {
+		return fmt.Errorf("node with id=%s not found", fromNodeID)
+	}
+
+	n2, ok := g.FindNodeById(toNodeID)
+	if !ok {
+		return fmt.Errorf("node with id=%s not found", toNodeID)
+	}
+
+	el := g.Edge(n1, n2)
+
+	FontName("Fira Mono")(&el)
+	FontSize(8)(&el)
+	Highlight(false)(&el)
+
+	for _, opt := range attrs {
+		opt(&el)
+	}
+
+	return nil
+}
diff --git a/pkg/graph/graph.go b/pkg/graph/graph.go
new file mode 100644
index 0000000..81fdcd6
--- /dev/null
+++ b/pkg/graph/graph.go
@@ -0,0 +1,75 @@
+package graph
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+)
+
+type Attribute func(*dot.Graph)
+
+func Label(label string) Attribute {
+	return func(el *dot.Graph) {
+		if strings.TrimSpace(label) != "" {
+			el.Attr("label", label)
+		}
+	}
+}
+
+func FontName(name string) Attribute {
+	return func(el *dot.Graph) {
+		el.Attr("fontname", name)
+	}
+}
+
+func FontSize(size float32) Attribute {
+	return func(el *dot.Graph) {
+		fs := fmt.Sprintf("%.2f", size)
+		el.Attr("fontsize", fs)
+	}
+}
+
+func LeftToRight() Attribute {
+	return func(el *dot.Graph) {
+		el.Attr("rankdir", "LR")
+	}
+}
+
+func TopToBottom() Attribute {
+	return func(el *dot.Graph) {
+		el.Attr("rankdir", "TB")
+	}
+}
+
+func RankSep(size float32) Attribute {
+	return func(el *dot.Graph) {
+		fs := fmt.Sprintf("%.2f", size)
+		el.Attr("ranksep", fs)
+	}
+}
+
+func BackgroundColor(color string) Attribute {
+	return func(el *dot.Graph) {
+		if strings.TrimSpace(color) != "" {
+			el.Attr("bgcolor", color)
+		} else {
+			el.Attr("bgcolor", "transparent")
+		}
+	}
+}
+
+func New(attrs ...Attribute) *dot.Graph {
+	el := dot.NewGraph(dot.Directed)
+
+	FontName("Fira Mono Bold")(el)
+	FontSize(13)(el)
+	LeftToRight()(el)
+	RankSep(1.1)(el)
+
+	for _, opt := range attrs {
+		opt(el)
+	}
+
+	return el
+}
diff --git a/pkg/node/node.go b/pkg/node/node.go
new file mode 100644
index 0000000..892d4d0
--- /dev/null
+++ b/pkg/node/node.go
@@ -0,0 +1,79 @@
+package node
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+)
+
+type Attribute func(*dot.Node)
+
+func Label(label string) Attribute {
+	return func(el *dot.Node) {
+		el.Attr("label", label)
+	}
+}
+
+func Shape(shape string) Attribute {
+	return func(el *dot.Node) {
+		el.Attr("shape", shape)
+	}
+}
+
+func Rounded(rounded bool) Attribute {
+	return func(el *dot.Node) {
+		if rounded {
+			el.Attr("style", "rounded,filled")
+		} else {
+			el.Attr("style", "filled")
+		}
+	}
+}
+
+func FillColor(color, fallback string) Attribute {
+	return func(el *dot.Node) {
+		if strings.TrimSpace(color) != "" {
+			el.Attr("fillcolor", color)
+		} else {
+			el.Attr("fillcolor", fallback)
+		}
+	}
+}
+
+func FontColor(color string) Attribute {
+	return func(el *dot.Node) {
+		if strings.TrimSpace(color) != "" {
+			el.Attr("fontcolor", color)
+		} else {
+			el.Attr("fontcolor", "#000000ff")
+		}
+	}
+}
+
+func FontName(name string) Attribute {
+	return func(el *dot.Node) {
+		el.Attr("fontname", name)
+	}
+}
+
+func FontSize(size float32) Attribute {
+	return func(el *dot.Node) {
+		fs := fmt.Sprintf("%.2f", size)
+		el.Attr("fontsize", fs)
+	}
+}
+
+func New(cluster *dot.Graph, id string, attrs ...Attribute) *dot.Node {
+	el := cluster.Node(id)
+
+	// default attributes
+	FontName("Fira Mono")(&el)
+	FontSize(9)(&el)
+
+	for _, opt := range attrs {
+		opt(&el)
+	}
+
+	return &el
+}
diff --git a/queue.go b/queue.go
new file mode 100644
index 0000000..ebd5f58
--- /dev/null
+++ b/queue.go
@@ -0,0 +1,58 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type queue struct {
+	seq int16
+}
+
+func (rcv *queue) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("qs%d", rcv.seq)
+}
+
+func (rcv *queue) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(comp.Label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor("", "transparent"),
+		// ^^^ hack to set a transparent background
+		// color since we will use the HTML table.
+		node.Shape("plaintext"),
+	)
+
+	caption := strings.TrimSpace(comp.Label)
+	if len(caption) == 0 {
+		caption = "&nbsp;"
+	}
+
+	fillColor := comp.FillColor
+	if strings.TrimSpace(comp.FillColor) == "" {
+		fillColor = "#bdb76bff"
+	}
+
+	label := fmt.Sprintf(`<table border="0" cellspacing="0" cellpadding="8">
+	<tr><td border="0" colspan="3">&nbsp;</td></tr>
+	<tr><td border="1" style="dashed" bgcolor="%s">msg N</td>
+		<td border="1" style="dashed" bgcolor="%s">...</td>
+		<td border="1" style="dashed" bgcolor="%s">msg 1</td></tr>
+	<tr><td border="0" colspan="3"><font point-size="8">%s</font></td></tr>
+	</table>`, fillColor, fillColor, fillColor, caption)
+
+	el.Attr("label", dot.HTML(label))
+}
diff --git a/service.go b/service.go
new file mode 100644
index 0000000..ab53eaf
--- /dev/null
+++ b/service.go
@@ -0,0 +1,37 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type service struct {
+	seq int16
+}
+
+func (rcv *service) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("ms%d", rcv.seq)
+}
+
+func (rcv *service) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(comp.Label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor(comp.FillColor, "#f5f5dcff"),
+		node.Shape("box"),
+	)
+	el.Attr("height", "0.5")
+}
diff --git a/storage.go b/storage.go
new file mode 100644
index 0000000..09135b1
--- /dev/null
+++ b/storage.go
@@ -0,0 +1,38 @@
+package draft
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/emicklei/dot"
+	"github.com/lucasepe/draft/pkg/cluster"
+	"github.com/lucasepe/draft/pkg/node"
+)
+
+type storage struct {
+	seq int16
+}
+
+func (rcv *storage) nextID() string {
+	rcv.seq++
+	return fmt.Sprintf("st%d", rcv.seq)
+}
+
+func (rcv *storage) sketch(graph *dot.Graph, comp Component) {
+	id := comp.ID
+	if strings.TrimSpace(comp.ID) == "" {
+		id = rcv.nextID()
+	}
+
+	cl := cluster.New(graph, id, cluster.Label(comp.Provider))
+
+	el := node.New(cl, id,
+		node.Label(comp.Label),
+		node.Rounded(comp.Rounded),
+		node.FontColor(comp.FontColor),
+		node.FillColor(comp.FillColor, "#f0e77fff"),
+		node.FontSize(8),
+		node.Shape("folder"),
+	)
+	el.Attr("height", "0.4")
+}