Skip to content

General Rules

  • Line breaks are important.
  • Lines are processed in order.
  • Tokens must be separated by whitespace, but the quantity of whitespace/indentation isn't important.
  • Keywords are case-insensitive (e.g. you can use softwareSystem or softwaresystem).
  • Double quote characters ("...") are optional when a property/expression contains no whitespace.
  • Opening curly brace symbols ({) must be on the same line (i.e. the last token of the statement, not on a line of their own).
  • Closing curly brace symbols (}) must be on a line of their own.
  • Opening/closing braces are only required when adding child content.
  • Use "" as a placeholder for an earlier optional property that you'd like to skip.
  • Tags are comma separated (e.g. Tag 1,Tag 2,Tag 3) - see Structurizr - Notation for details of how tags and styling works.
  • The Structurizr CLI will provide some default views and styles when they are not specified in your DSL - see Structurizr CLI - Defaults for details.

In addition, workspaces are subject to the following rules:

  • Each view must have a unique "key" (this is autogenerated if not specified).
  • Software and people names must be unique.
  • Container names must be unique within the context of a software system.
  • Component names must be unique within the context of a container.
  • Deployment node names must be unique with their parent context.
  • Infrastructure node names must be unique with their parent context.
  • All relationships from a source element to a destination element must have a unique description.