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
softwareSystemorsoftwaresystem). - 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.