This example shows how to use arc42 in combination with the C4 model with the Documentation as Code technique.
It shows how to use the techniques described in The Ultimate Guide to Software Architecture Documentation.
Check out the deployed example HTML build provided on GitHub Pages.
Get started in 3 simple steps:
# 1. Generate diagrams from C4 model
./dtcw exportStructurizr
# 2. Build HTML documentation
./dtcw generateHTML
# 3. Open the result
open build/html5/internet-banking-system.htmlFor more details, see Build the software architecture documentation
Structure template for software architecture documentation |
|
Markup format for writing documentation |
|
Processor to generate HTML, PDF and other formats |
Abstraction-first approach to diagramming software architecture |
|
DSL to describe C4 models as code |
|
CLI to export PlantUML diagrams from Structurizr DSL |
Automation for generating documentation |
|
Diagram generation service |
|
Generate and manage Architecture Decision Records (ADRs) |
|
Record and track technical debts (TDRs) |
|
Tip
|
For more tech inspiration take a look at the Documentation as Code Technology Radar. |
|
Important
|
If you don’t plan to use the adr-tools, you can skip this step. Please make sure that Chapter 09 Architecture Decisions does not contain any references to the ADRs. |
The ADR template is based on Markdown and the ADR chapters must be adapted to the chapter levels of the arc42 template.
-
Install adr-tools
-
Get the path of the adr template of the adr-tools via
adr config -
Replace the content of the
template.mdfile with the content of the adr-template.md file of this repository.
docToolchain provides the following commands via the ./dtcw wrapper script:
| Command | Description |
|---|---|
|
Generate PlantUML diagrams from the C4 Model (Structurizr DSL) |
|
Generate HTML documentation |
|
Generate PDF documentation |
|
Generate documentation as Microsite |
|
Convert Markdown ADRs to AsciiDoc |
|
Note
|
These examples use the public kroki.io instance to generate the diagrams. For your own documentation, replace the references to kroki.io with your own kroki instance. |
If you want to build everything without the ./dtcw script, you can use the following commands.
With the Structurizr CLI via Docker Image
docker run -it --rm -v $PWD:/usr/local/structurizr structurizr/cli export -w documentation/bank.dsl -format plantuml/structurizr -output documentation/diagramsWith a local installed Structurizr CLI
-
Download the structurizr-cli, unzip and move it into
./bin/structurizr-clior use the latest Docker Image
curl --show-error --location https://github.com/structurizr/cli/releases/download/v2025.11.09/structurizr-cli.zip -o tmp.zip && mkdir -p bin/structurizr-cli && unzip -d bin/structurizr-cli tmp.zip && rm tmp.zip-
Generate the diagrams from the structurizr workspace model
./bin/structurizr-cli/structurizr.sh export -w documentation/bank.dsl -format plantuml/structurizr -output documentation/diagramsThis project is open source. Feel free to use it as a starting point for your own software architecture documentation.
