A standard rectangular component supporting corner rounding, label text, and local styling overrides.
| Property | Type | Description |
|---|---|---|
label |
String | Text displayed inside the rectangle. |
rx |
Number | Horizontal corner radius (for rounded corners). |
ry |
Number | Vertical corner radius (for rounded corners). |
lifeline |
Boolean | Draws a vertical sequence lifeline from the bottom edge (default false). |
themeOverride block)| Style Property | Description |
|---|---|
backgroundColor |
Fill color (Hex code like "#1e1e2e" or color name). |
borderColor |
Border stroke color (Hex code or color name). |
textColor |
Label text color (Hex code or color name). |
Database: Rectangle {
label: "User Store"
rx: 8
ry: 8
themeOverride: {
backgroundColor: "#1e1e2e"
borderColor: "#cdd6f4"
textColor: "#f5e0dc"
}
}
A process step box with vertical segment lines, commonly used in flowchart steps or sequence actors.
| Property | Type | Description |
|---|---|---|
label |
String | Text displayed inside the central section. |
tabWidthRatio |
Number | Ratio of the side segments' width (default is 0.2). |
lifeline |
Boolean | Draws a vertical sequence lifeline from the bottom edge (default false). |
themeOverride block)| Style Property | Description |
|---|---|
backgroundColor |
Fill color (Hex code or color name). |
borderColor |
Border and segment line color. |
textColor |
Label text color. |
Client: Process {
label: "Client App"
lifeline: true
themeOverride: {
backgroundColor: "#2e3440"
borderColor: "#88c0d0"
textColor: "#eceff4"
}
}
Renders a circle (using radius) or an oval/ellipse shape (using rx and ry).
| Property | Type | Description |
|---|---|---|
label |
String | Text displayed inside the shape. |
radius |
Number | Radius for a perfect circle. |
rx |
Number | Horizontal radius for an ellipse. |
ry |
Number | Vertical radius for an ellipse. |
lifeline |
Boolean | Draws a vertical sequence lifeline from the bottom edge (default false). |
themeOverride block)| Style Property | Description |
|---|---|
backgroundColor |
Fill color of the ellipse. |
borderColor |
Outline color of the ellipse. |
textColor |
Label text color. |
StartNode: Ellipse {
label: "Start"
radius: 35
themeOverride: {
backgroundColor: "#a3be8c"
borderColor: "#4c566a"
textColor: "#2e3440"
}
}
A container layout that stacks nested child components vertically with customizable gaps and padding.
| Property | Type | Description |
|---|---|---|
label |
String | Header text displayed on the container. |
gap |
Number | Vertical spacing in pixels between children (default is 12). |
padding |
Number | Internal margins around children inside container walls (default is 16). |
lifeline |
Boolean | Draws a vertical sequence lifeline from the bottom edge (default false). |
themeOverride block)| Style Property | Description |
|---|---|
backgroundColor |
Fill color of the container header tab. |
borderColor |
Color of the outer container box stroke. |
textColor |
Container header label text color. |
MyContainer: VerticalContainer {
label: "User Module"
gap: 15
padding: 20
UserObj: Rectangle {
label: "User Entity"
}
}
A 3D cylinder shape commonly used to represent databases or data stores.
| Property | Type | Description |
|---|---|---|
label |
String | Text label displayed inside the cylinder. |
UserDB: Cylinder {
label: "User Data Store"
}
A 3D isometric box shape commonly representing services, processes, or modules.
| Property | Type | Description |
|---|---|---|
label |
String | Text label displayed on the front face of the cube. |
AuthService: Cube {
label: "Auth Service"
}
A diamond shape used for decision gateways or conditional branches in flowcharts.
| Property | Type | Description |
|---|---|---|
label |
String | Text label displayed inside the diamond. |
CheckAuth: Diamond {
label: "Authorized?"
}
A flat-topped hexagon shape commonly representing subsystems, domains, or nodes.
| Property | Type | Description |
|---|---|---|
label |
String | Text label displayed inside the hexagon. |
BillingSystem: Hexagon {
label: "Billing Domain"
}
A UML stick figure representing system users, actors, or external integrations.
| Property | Type | Description |
|---|---|---|
label |
String | Text label displayed beneath the stick figure. |
User: Actor {
label: "Customer"
}
A skewed parallelogram shape representing data, input/output files, or reports.
| Property | Type | Description |
|---|---|---|
label |
String | Text label displayed inside the parallelogram. |
CsvData: Parallelogram {
label: "Upload File"
}
A multi-compartment shape for UML class diagrams (with attributes and methods sections) or structured lists (with a header and item rows). Compartments are separated by semicolons.
| Property | Type | Description |
|---|---|---|
label |
String | Header text displayed in the top compartment (e.g. class name or list title). |
attributes |
String | Semicolon-separated attribute rows (e.g. "id: string; name: string"). Renders a second compartment below the header. |
methods |
String | Semicolon-separated method rows (e.g. "getId(): string; save(): void"). Renders a third compartment below attributes. |
items |
String | Semicolon-separated list rows. Use this for a simple list without UML class structure. |
themeOverride block)| Style Property | Description |
|---|---|
backgroundColor |
Fill color for all compartments. |
borderColor |
Border and compartment divider line color. |
textColor |
Text color for header and all rows. |
| Symbol | Visibility | Colour |
|---|---|---|
+ | Public | Green |
- | Private | Red |
# | Protected | Amber |
~ | Package / Internal | Violet |
UserService: Class {
label: "UserService"
attributes: {
+id: string
+name: string
-passwordHash: string
#createdAt: Date
}
methods: {
+getUser(): User
+saveUser(): void
-validate(): boolean
~auditLog(): void
}
}
Requirements: Class {
label: "Requirements"
items: {
Auth via OAuth 2.0
Rate limiting per IP
Audit logging
GDPR compliance
}
}
A UML interface shape — rectangle with an «interface» stereotype label in italics above the bold interface name, and a separator line below the header for method rows.
| Property | Type | Description |
|---|---|---|
label | String | The interface name displayed in the header. |
Serializable: Interface {
label: "Serializable"
}
IRepository: Interface {
label: "IUserRepository"
themeOverride: {
borderColor: "#7aa2f7"
textColor: "#cdd6f4"
}
}
A UML component box — rectangle with the standard two-notch component icon on the right side, representing a deployable software component or service.
| Property | Type | Description |
|---|---|---|
label | String | The component name displayed inside the shape. |
PaymentService: UMLComponent {
label: "PaymentService"
}
AuthService: UMLComponent {
label: "AuthService"
themeOverride: {
borderColor: "#9ece6a"
}
}
A file-card shape with a small tab on the top-left corner — commonly used to represent a code module, file, or library unit.
| Property | Type | Description |
|---|---|---|
label | String | The module name displayed in the body. |
AuthModule: Module {
label: "auth.module"
}
HttpModule: Module {
label: "http.module"
themeOverride: {
borderColor: "#bb9af3"
}
}
A UML package — folder-style shape with a wider angled tab on the top-left that displays the package name, and a large open body area for nested elements.
| Property | Type | Description |
|---|---|---|
label | String | The package name shown inside the tab. |
gap | Number | Vertical spacing in pixels between children (default is 12). |
padding | Number | Internal margins around children inside package walls (default is 16). |
AuthPackage: Package {
label: "com.example.auth"
gap: 15
padding: 20
AuthService: UMLComponent {
label: "AuthService"
}
}
InfraPackage: Package {
label: "com.example.infra"
themeOverride: {
borderColor: "#f7768e"
backgroundColor: "#1a1b26"
}
}
Renders a single-line text label without any box or border, useful for annotations or standalone headers.
| Property | Type | Description |
|---|---|---|
label | String | The text string to display. |
align | String | Text alignment: "left", "center", or "right" (default "center"). |
NoteLabel: Text {
label: "This is a standalone note"
align: "left"
themeOverride: {
textColor: "#a1a1aa"
}
}
Renders a multi-line paragraph block of text. Supports explicit newlines (\n) for multi-line formatting.
| Property | Type | Description |
|---|---|---|
text | String | The multi-line text to display (or use label as fallback). |
align | String | Text alignment: "left", "center", or "right" (default "center"). |
DescBlock: Paragraph {
text: "1. Perform user verification\n2. Call authorization subsystem\n3. Return result payload"
align: "left"
}
Renders a vector graphic inside the diagram using raw inline SVG code. The graphic can be scaled dynamically.
| Property | Type | Description |
|---|---|---|
content |
String | The raw SVG source code to render. |
scale |
Number | Double value scaling factor (default: 1.0). |
width |
Number | Optional base width override. If not specified, extracted from SVG headers. |
height |
Number | Optional base height override. If not specified, extracted from SVG headers. |
LogoNode: SVGImage {
content: "<svg width=\"100\" height=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#3b82f6\" stroke=\"#ffffff\" stroke-width=\"4\"/></svg>"
scale: 1.5
}
Renders standard raster images (PNG, JPEG, GIF) directly inside the canvas by pasting their base64 encoded text.
| Property | Type | Description |
|---|---|---|
content |
String | The base64 encoded image string (supports with or without data:image/...;base64, prefix). |
scale |
Number | Double value scaling factor (default: 1.0). |
width |
Number | Optional base width override. If not specified, resolved automatically from the binary header. |
height |
Number | Optional base height override. If not specified, resolved automatically from the binary header. |
AvatarNode: RasterImage {
content: "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
scale: 4.0
}
These general attributes and blocks are supported by all diagram elements inside DrakoFlow.
| Property | Type | Description |
|---|---|---|
doc |
String | Embedded Markdown documentation. Adds a document badge on the element that displays the rendered markdown in a reader modal when clicked. |
x |
Number | Explicit horizontal position override (in pixels). Useful for manual grid arrangements. |
y |
Number | Explicit vertical position override (in pixels). Useful for manual grid arrangements. |
lifeline |
Boolean | If set to true, treats the element as a sequence diagram lifeline, drawing a vertical dashed line below it. |
themeOverride)Customize an individual element's visual presentation using style properties inside a nested block:
| Style Key | Type | Description |
|---|---|---|
backgroundColor |
String | Local fill color override (e.g. "#ff0000", "primaryColor"). |
borderColor |
String | Local border color override. |
textColor |
String | Local text label color override. |
strokeWidth |
Number | Local border line width override. |
@tags)You can associate array-based tag qualifiers immediately before an element declaration to enable diagram-wide filtering:
@tags: ["database", "infrastructure"]
myDatabase: Rectangle {
label: "User DB"
doc: "Stores application user accounts."
}
@layout)You can specify the layout flow direction algorithm for your diagram using the global @layout directive at the top of the file:
@layout: top-to-bottom
client: Process {
label: "Client App"
}
server: Process {
label: "Server App"
}
client -> server : "API Request"
Supported layout types:
left-to-right (Default) - Elements are arranged horizontally from left to right.top-to-bottom - Elements are arranged vertically from top to bottom.Connect components together with arrows and labels to describe flow steps.
| Syntax | Connector Type |
|---|---|
A -> B |
Directed arrow pointing from A to B. |
A <- B |
Directed arrow pointing from B to A. |
A <-> B |
Bidirectional arrow between A and B. |
A - B |
Simple connection line (no arrow heads). |
A o-> B / A o->o B |
Directed arrow with circle(s) at the source, target (e.g., ->o), or both ends. |
Include brackets with multiplicity strings before and/or after the arrow:
Client [1] -> [0..*] Order
{...})| Property | Type | Description |
|---|---|---|
color |
String | Stroke color of the line/arrow (Hex code like "#60a5fa" or color name). |
lineStyle |
String | Line pattern: "solid", "dashed", or "dotted" (defaults to "solid"). |
Client -> Server : "GET /orders" {
lineStyle: "solid"
color: "#60a5fa"
}
Server [1] -> [0..*] Database : "Fetch items" {
lineStyle: "dashed"
color: "#a1a1aa"
}
DrakoFlow supports standard editor key combinations for faster navigation and file management.
| Shortcut | Action Description |
|---|---|
| Ctrl + S or Cmd + S | Save the active diagram to a local DSL script file download. |
| Ctrl + O or Cmd + O | Open the local file picker to load a diagram DSL script into a new tab. |
| Ctrl + Shift + E or Cmd + Shift + E | Open the PNG export configuration settings dialog. |
| Ctrl + Shift + C or Cmd + Shift + C | Copy the active diagram as standalone SVG markup to the clipboard. |
| Ctrl + Shift + S or Cmd + Shift + S | Open the serverless sharing modal to copy the compressed diagram URL. |
| Tab | Indent active line or selection by 2 spaces. |
| Shift + Tab | Outdent active line or selection by 2 spaces. |
A container component styled as a cloud, ideal for representing external services, APIs, or internet-based infrastructure networks.
| Property | Type | Description |
|---|---|---|
label |
String | The text label displayed inside the cloud container. |
AWSCloud: Cloud {
label: "Amazon Web Services"
padding: 30
}
A 3D box component representing a physical machine, virtual server, or device. Nodes can host other sub-components.
| Property | Type | Description |
|---|---|---|
label |
String | The name of the node displayed near the top. |
WebServer: Node {
label: "Ubuntu App Server"
AppInstance: Rectangle {
label: "Node.js Application"
}
}
Represents a deployed file or software package (like a JAR, zip, or executable), decorated with a document sheet icon in the top-right corner.
| Property | Type | Description |
|---|---|---|
label |
String | The name of the artifact. |
DeployableArchive: Artifact {
label: "drakoflow-v1.war"
}
A container component styled as a folder outline. Useful for showing file-system structures or grouping related packages.
| Property | Type | Description |
|---|---|---|
label |
String | Folder name shown inside the tab. |
StaticAssets: Folder {
label: "public/img"
LogoImage: Rectangle {
label: "logo.png"
}
}
A general-purpose container representing a logical boundaries frame. Displays a top-left title tab with an angled cut.
| Property | Type | Description |
|---|---|---|
label |
String | The frame name. |
AuthFrame: Frame {
label: "Authentication Subsystem"
LoginAPI: Rectangle {
label: "/api/login"
}
}
Represents a storage volume or storage drum, rendered as a horizontal cylinder/barrel.
| Property | Type | Description |
|---|---|---|
label |
String | Storage name label. |
BackupDrive: Storage {
label: "NAS Backup Volume"
}
A component styled as a stack of boxes to represent layered components or clusters of similar instances.
| Property | Type | Description |
|---|---|---|
label |
String | The name of the stack. |
AppReplica: Stack {
label: "App Nodes (3x Replicas)"
}
A clean sheet of paper representation with a folded top-right corner to indicate a file resource.
| Property | Type | Description |
|---|---|---|
label |
String | Name of the file. |
ConfigFile: File {
label: "config.json"
}
A clean, modern container styled as a card with a left-accent color stripe representing smaller hosts, tasks, or logical components.
| Property | Type | Description |
|---|---|---|
label |
String | The card header label. |
TaskItem: Card {
label: "Background Job"
padding: 12
}
A horizontal flat ellipse representing system use cases or user goals.
| Property | Type | Description |
|---|---|---|
label | String | The use case name displayed inside the ellipse. |
Checkout: Usecase {
label: "Checkout Item"
}
A robustness diagram boundary node representing user interfaces, APIs, or system boundaries.
| Property | Type | Description |
|---|---|---|
label | String | The boundary name displayed centered below the icon. |
LoginUI: Boundary {
label: "Login Form"
}
A robustness diagram control node representing business logic, loop controllers, or orchestrators.
| Property | Type | Description |
|---|---|---|
label | String | The control loop name displayed centered below the icon. |
AuthMgr: Control {
label: "Auth Manager"
}
A robustness diagram entity node representing database records, persistent data structures, or server models.
| Property | Type | Description |
|---|---|---|
label | String | The entity name displayed centered below the icon. |
UserRecord: Entity {
label: "User Entity"
}
A horizontal cylinder tube representing a message broker, FIFO queue, or streaming data pipeline.
| Property | Type | Description |
|---|---|---|
label | String | The name of the queue. |
MsgBus: Queue {
label: "Kafka Topic"
}
Representing multiple stacked participants, drawn as two overlapping offset rectangles.
| Property | Type | Description |
|---|---|---|
label | String | The name of the collections. |
Subscribers: Collections {
label: "User List"
}
An active software agent container styled with a premium double-line outline. Supports nesting child components inside.
| Property | Type | Description |
|---|---|---|
label | String | The name/title of the agent container. |
gap | Number | Vertical gap spacing in pixels between nested children. |
padding | Number | Internal padding space around nested components. |
WorkerAgent: Agent {
label: "Billing Agent"
WorkerJob: Rectangle {
label: "Process Invoice"
}
}
Renders a UML enumeration class showing the «enumeration» stereotype above the enum name.
| Property | Type | Description |
|---|---|---|
label | String | The name of the enum. |
attributes | String | Semicolon-separated attributes/values row. |
items | String | Semicolon-separated item row rows (list view). |
Status: Enum {
label: "UserStatus"
items: {
ACTIVE
INACTIVE
SUSPENDED
}
}
Renders a UML abstract class with italicized bold title name and a «abstract» stereotype row.
| Property | Type | Description |
|---|---|---|
label | String | The name of the abstract class. |
attributes | String | Semicolon-separated attribute definitions. |
methods | String | Semicolon-separated method definitions. |
BaseSvc: Abstract {
label: "BaseService"
attributes: {
#dbConnection: Connection
}
methods: {
+connect(): void
#execute(): ResultSet
}
}
Renders a UML annotation class showing the «annotation» stereotype row.
| Property | Type | Description |
|---|---|---|
label | String | The name of the annotation. |
attributes | String | Semicolon-separated annotation elements/properties. |
EntityAnn: Annotation {
label: "Entity"
attributes: {
tableName: String
}
}
Renders a UML structure showing the «struct» stereotype row above the structure name.
| Property | Type | Description |
|---|---|---|
label | String | The name of the struct. |
attributes | String | Semicolon-separated struct fields. |
UserDto: Struct {
label: "UserDTO"
attributes: {
id: UUID
username: String
email: String
}
}
Renders a UML object instance with the header label underlined, typically representing instances in Object Diagrams.
| Property | Type | Description |
|---|---|---|
label | String | The object instance name (e.g. myUser : User). |
attributes | String | Semicolon-separated attribute value assignments. |
userInstance: Object {
label: "alice : User"
attributes: {
id = "usr_001"
name = "Alice"
role = "Admin"
}
}
Paste your PlantUML diagram code below. We will translate classes, elements, packages, and associations into DrakoFlow DSL and load it in a new tab.
The diagram you are trying to close has not been saved. Do you want to close it anyway? Your changes will be lost.
Copy the serverless URL below to share your diagram with others. It contains your compressed diagram DSL.