Skip to main content

Classification

Here is the classification of the provided tools (primarily components of the Kroki diagram ecosystem) grouped by their primary domain and usage:


1. General-Purpose & Multi-Paradigm Diagramming​

  • Mermaid (11.15.0) – Markdown-inspired syntax for generating flowcharts, sequence diagrams, and charts.
  • PlantUML (1.2026.6) – Text-based language for creating UML diagrams and system architectures.
  • Graphviz / DOT (14.1.3) – Open-source graph visualization software using the DOT language.
  • D2 (0.7.1) – Modern, declarative diagram scripting language.
  • Diagrams.net (16.2.4) – Open-source visual diagram editor engine (Draw.io).
  • Excalidraw (0.18.1) – Virtual whiteboard tool for hand-drawn, sketch-style diagrams.
  • UMlet (15.1) – Free, interactive UML diagram drawing tool.
  • TikZ (3.1.9a) – Programmatic graphics package for TeX/LaTeX.

2. Software Architecture & Modeling​

  • C4PlantUML (1.2026.6) – PlantUML macros and extensions for rendering the C4 software architecture model.
  • Structurizr (6.2.2) – Tooling for visualizing and documenting software architecture based on the C4 model.
  • Nomnoml (1.7.0) – Lightweight tool for drawing UML class diagrams from simple grammar.

3. Network, Infrastructure & Layouts (BlockDiag Family)​

  • BlockDiag (3.4.2) – Block diagram generation tool.
  • ActDiag (3.4.2) – Activity diagram generator.
  • NwDiag (3.4.2) – Network diagram generator.
  • RackDiag (3.4.2) – Server rack layout diagram generator.
  • PacketDiag (3.4.2) – Network packet structure diagram generator.
  • SeqDiag (3.4.2) – Sequence diagram generator.
  • WireViz (0.3.3) – Documentation tool for cables, wiring harnesses, and pinout diagrams.

4. Databases & Entity Relationships​

  • DBML (1.0.31) – Database Markup Language for defining and documenting relational database schemas.
  • ERD (0.2.3) – Entity-Relationship diagram generator.

5. Hardware, Timing & Protocols​

  • WaveDrom (3.6.1) – JavaScript/JSON-based digital timing diagram rendering engine.
  • Bytefield (1.11.0) – Tool for generating network protocol and memory layout packet diagrams.
  • Symbolator (1.2.2) – Schematic symbol generator from HDL (Hardware Description Language) code.

6. Data Visualization​

  • Vega (6.2.0) – Visualization grammar for declarative interactive graphics.
  • Vega-Lite (6.4.3) – High-level specification grammar built on top of Vega.

7. ASCII Art, Text-to-SVG & Ecosystem Aggregators​

  • Ditaa (1.0.3) – Converts ASCII art text diagrams into clean vector graphics.
  • SvgBob (0.7.6) – Converts ASCII art diagrams into pristine SVG.
  • Goat (undefined) – Go-based ASCII-to-SVG diagram parser and renderer.
  • Pikchr (7269f78c4a) – PIC-inspired markup language for technical diagrams.
  • BPMN (18.18.0) – Business Process Model and Notation rendering engine.
  • Kroki (0.31.2) – Unified meta-aggregator API service that hosts and runs all of the above diagramming tools.

To map these diagram domains as multiple documentation instances (multi-instance docs) in Docusaurus, you can use the built-in plugin architecture (@docusaurus/plugin-content-docs).

Each functional category becomes an independent documentation plugin instance, allowing you to organize your files into separate directories (e.g., docs-architecture, docs-hardware, etc.), maintain separate sidebars, and expose them at distinct URL routes.

Here is how you can map and configure them in your docusaurus.config.js:


Docusaurus Multi-Instance Docs Configuration​

1. Directory Structure Mapping​

Organize your source content directory (/docs or a custom root) to match each domain instance:

my-website/
├── docs-general/ # General-Purpose & Multi-Paradigm
├── docs-architecture/ # Software Architecture & Modeling
├── docs-infrastructure/ # Network, Infrastructure & Layouts
├── docs-database/ # Databases & Entity Relationships
├── docs-hardware/ # Hardware, Timing & Protocols
├── docs-dataviz/ # Data Visualization
└── docs-ascii/ # ASCII Art & Ecosystem Aggregators

2. Docusaurus Configuration (docusaurus.config.js)​

Add each domain as a separate instance of the content docs plugin. This assigns them dedicated route bases (routeBasePath) and sidebar configurations.

/** @type {import('@docusaurus/types').Config} */
const config = {
title: "My Documentation Hub",
tagline: "Technical Documentation with Kroki Integration",
url: "https://your-docs-site.com",
baseUrl: "/",
// ... other standard config ...

presets: [
[
"classic",
/** @type {import('@docusaurus/preset-classic').Options} */
({
// Disable the default single 'docs' instance if you want everything modularized
docs: false,
blog: {
showReadingTime: true,
},
theme: {
customCss: require.resolve("./src/css/custom.css"),
},
}),
],
],

plugins: [
// 1. General-Purpose & Multi-Paradigm Diagramming
[
"@docusaurus/plugin-content-docs",
{
id: "general",
path: "docs-general",
routeBasePath: "general",
sidebarPath: require.resolve("./sidebarsGeneral.js"),
},
],

// 2. Software Architecture & Modeling
[
"@docusaurus/plugin-content-docs",
{
id: "architecture",
path: "docs-architecture",
routeBasePath: "architecture",
sidebarPath: require.resolve("./sidebarsArchitecture.js"),
},
],

// 3. Network, Infrastructure & Layouts (BlockDiag Family)
[
"@docusaurus/plugin-content-docs",
{
id: "infrastructure",
path: "docs-infrastructure",
routeBasePath: "infrastructure",
sidebarPath: require.resolve("./sidebarsInfrastructure.js"),
},
],

// 4. Databases & Entity Relationships
[
"@docusaurus/plugin-content-docs",
{
id: "database",
path: "docs-database",
routeBasePath: "database",
sidebarPath: require.resolve("./sidebarsDatabase.js"),
},
],

// 5. Hardware, Timing & Protocols
[
"@docusaurus/plugin-content-docs",
{
id: "hardware",
path: "docs-hardware",
routeBasePath: "hardware",
sidebarPath: require.resolve("./sidebarsHardware.js"),
},
],

// 6. Data Visualization
[
"@docusaurus/plugin-content-docs",
{
id: "dataviz",
path: "docs-dataviz",
routeBasePath: "dataviz",
sidebarPath: require.resolve("./sidebarsDataviz.js"),
},
],

// 7. ASCII Art, Text-to-SVG & Ecosystem Aggregators
[
"@docusaurus/plugin-content-docs",
{
id: "ascii",
path: "docs-ascii",
routeBasePath: "ascii",
sidebarPath: require.resolve("./sidebarsAscii.js"),
},
],
],
};

module.exports = config;

3. Navbar Integration (docusaurus.config.js)​

Expose the multi-instances easily in your top navigation bar (themeConfig.navbar) so users can jump between domains:

themeConfig: {
navbar: {
title: 'Diagram Docs',
items: [
{ to: '/general/intro', label: 'General', position: 'left' },
{ to: '/architecture/intro', label: 'Architecture', position: 'left' },
{ to: '/infrastructure/intro', label: 'Infrastructure', position: 'left' },
{ to: '/database/intro', label: 'Databases', position: 'left' },
{ to: '/hardware/intro', label: 'Hardware', position: 'left' },
{ to: '/dataviz/intro', label: 'Data Viz', position: 'left' },
{ to: '/ascii/intro', label: 'ASCII & Tools', position: 'left' },
],
},
}