<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Plantuml on Backend Engineering Strategy Tools</title><link>https://backend-engineering-strategy-tools.github.io/site/tags/plantuml/</link><description>Recent content in Plantuml on Backend Engineering Strategy Tools</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Wed, 03 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://backend-engineering-strategy-tools.github.io/site/tags/plantuml/index.xml" rel="self" type="application/rss+xml"/><item><title>Diagrams as Code — Mermaid and PlantUML</title><link>https://backend-engineering-strategy-tools.github.io/site/public-notes/docs-as-code/diagrams/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://backend-engineering-strategy-tools.github.io/site/public-notes/docs-as-code/diagrams/</guid><description>&lt;p&gt;Diagrams as code: describe a diagram in text, render it as an image. No drag-and-drop, no binary file that diffs as noise, no diagram that goes stale because it&amp;rsquo;s a PNG nobody updates. The source lives in Git alongside the code it describes.&lt;/p&gt;
&lt;h2 id="mermaid"&gt;Mermaid
&lt;/h2&gt;&lt;p&gt;Mermaid is a JavaScript-based diagramming tool with a simple, readable syntax. It renders natively in GitHub Markdown, GitLab, and many documentation tools — paste a fenced code block with &lt;code&gt;mermaid&lt;/code&gt; as the language and the diagram appears inline. No server needed for basic use.&lt;/p&gt;
&lt;p&gt;Flowchart:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```mermaid
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flowchart LR
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; A[Source] --&amp;gt; B{Build}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; B -- pass --&amp;gt; C[Test]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; B -- fail --&amp;gt; D[Notify]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; C --&amp;gt; E[Deploy]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sequence diagram:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```mermaid
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sequenceDiagram
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; participant Client
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; participant API
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; participant DB
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Client-&amp;gt;&amp;gt;API: POST /order
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; API-&amp;gt;&amp;gt;DB: INSERT order
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DB--&amp;gt;&amp;gt;API: ok
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; API--&amp;gt;&amp;gt;Client: 201 Created
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Other supported types: class diagrams, entity-relationship, state machines, Gantt charts, Git graphs.&lt;/p&gt;
&lt;p&gt;The &lt;a class="link" href="https://mermaid.live" target="_blank" rel="noopener"
 &gt;Mermaid live editor&lt;/a&gt; is the fastest way to iterate on a diagram.&lt;/p&gt;
&lt;h2 id="plantuml"&gt;PlantUML
&lt;/h2&gt;&lt;p&gt;PlantUML predates Mermaid and has a wider set of diagram types — UML sequence, class, component, deployment, activity, state, and non-UML types like C4 (architecture), BPMN, and Gantt. The syntax is more verbose than Mermaid but more expressive for complex diagrams.&lt;/p&gt;
&lt;p&gt;PlantUML requires a rendering server (Java-based, self-hostable) or the hosted server at &lt;code&gt;plantuml.com&lt;/code&gt;. Most IDE plugins (IntelliJ, VS Code) bundle a renderer.&lt;/p&gt;
&lt;p&gt;Sequence diagram:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-plantuml" data-lang="plantuml"&gt;@startuml
actor Client
participant API
database DB

Client -&amp;gt; API : POST /order
API -&amp;gt; DB : INSERT order
DB --&amp;gt; API : ok
API --&amp;gt; Client : 201 Created
@enduml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Component diagram:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-plantuml" data-lang="plantuml"&gt;@startuml
package &amp;#34;Frontend&amp;#34; {
 [Web App]
}

package &amp;#34;Backend&amp;#34; {
 [API Server]
 [Worker]
}

database &amp;#34;PostgreSQL&amp;#34;

[Web App] --&amp;gt; [API Server]
[API Server] --&amp;gt; PostgreSQL
[Worker] --&amp;gt; PostgreSQL
@enduml
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="which-to-use"&gt;Which to use
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Mermaid&lt;/th&gt;
 &lt;th&gt;PlantUML&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Renders in GitHub/GitLab&lt;/td&gt;
 &lt;td&gt;Yes, natively&lt;/td&gt;
 &lt;td&gt;No, requires plugin or pre-rendering&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Setup&lt;/td&gt;
 &lt;td&gt;Zero&lt;/td&gt;
 &lt;td&gt;Rendering server or plugin&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Syntax&lt;/td&gt;
 &lt;td&gt;Simple, readable&lt;/td&gt;
 &lt;td&gt;More verbose, more powerful&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Diagram types&lt;/td&gt;
 &lt;td&gt;Core UML + Git/Gantt&lt;/td&gt;
 &lt;td&gt;Full UML + C4 + more&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Best for&lt;/td&gt;
 &lt;td&gt;Quick diagrams in docs and READMEs&lt;/td&gt;
 &lt;td&gt;Complex architecture and UML diagrams&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="resources"&gt;Resources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://mermaid.js.org/" target="_blank" rel="noopener"
 &gt;Mermaid documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://mermaid.live" target="_blank" rel="noopener"
 &gt;Mermaid live editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://plantuml.com/" target="_blank" rel="noopener"
 &gt;PlantUML documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.plantuml.com/plantuml/uml/" target="_blank" rel="noopener"
 &gt;PlantUML online server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>