What is C4 Diagrams?
C4 Diagrams is part of experimental builds. To access this capability, contact your sales representative.
Understanding the C4 Model
Before exploring how Nodinite implements C4 Diagrams, it is useful to understand what the C4 model is and why it has become the industry standard for communicating software architecture.
The C4 model was created by Simon Brown as a practical way to describe and communicate software systems. Its name comes from the four levels of zoom it defines:
| Level | Name | Audience | Shows |
|---|---|---|---|
| L1 | Context | Everyone — business and technical | People, external systems, high-level relationships |
| L2 | Container | Technical teams | Applications, services, databases, and the technology choices within a system boundary |
| L3 | Component | Developers | Components inside a specific container |
| L4 | Code | Very senior developers | UML-style class diagrams |
The key insight is that most architectural communication only requires L1 and L2. Detailed L3/L4 diagrams are rarely shared beyond the development team. Nodinite currently delivers L1 (Context) and L2 (Container) — the diagrams that influence stakeholder decisions and drive integration design.
Why the C4 Model Has Won
- Tool-neutral — the same notation works in Mermaid, PlantUML, Structurizr, Visio, or hand-drawn on a whiteboard
- Consistent zoom levels — everyone on the team knows exactly what a "Container diagram" means
- Widely adopted — used by thousands of engineering teams across industries and vendors
- Embeddable — Mermaid C4 syntax renders natively in GitHub, Confluence, Azure DevOps, Notion, and more
Why C4 Diagrams Matters to Your Organization
Architecture diagrams are critical artifacts for alignment — they help executives understand system scope, guide teams through design decisions, and bridge communication gaps between technical and business stakeholders. However, most diagram tools suffer from the same problem:
| Challenge | Business Impact |
|---|---|
| Diagrams go stale | Documentation drifts from reality, reducing trust in architectural decisions |
| No single source of truth | Business systems, IT teams, and architects maintain separate diagrams that conflict |
| Expensive to maintain | Teams spend 10-15% of their time keeping diagrams in sync with changes |
| Hard for non-technical stakeholders | Generic boxes with no context make it difficult for executives and product teams to understand scope |
| Can't show multiple perspectives | A single diagram can't show both high-level system context AND technical infrastructure layers |
C4 Diagrams in Nodinite solves this by linking diagrams directly to your existing Repository — the system of record for all integration metadata. When a Service is renamed, deployed, or re-architected, every C4 diagram that uses it automatically reflects the change. Stakeholders always see current, accurate information without manual diagram maintenance.
How Nodinite Entities Map to C4 Concepts
The critical insight is that no new top-level Repository entities are needed. The existing Nodinite Repository Model already contains everything the C4 model requires. Only a small number of new typed properties are added to existing entities.
L1: C4 Context → Systems + Connectors
In a C4 Context diagram, you see People (users, roles) and Software Systems placed around a central system boundary. In Nodinite, these are Systems with the new C4Type property:
| C4 L1 Element | Nodinite Entity | C4Type Value |
Visual |
|---|---|---|---|
| Person / User | System | Person |
|
| Internal Software System | System | InternalSystem |
|
| External Software System | System | ExternalSystem |
Relationships between Persons and Systems are shown as arrows with a Label (describing the interaction, e.g., "Sends orders") and a Protocol (e.g., "REST/HTTPS").
L2: C4 Container → Services in Domain Swimlanes
In a C4 Container diagram, you zoom into the system boundary and see the applications, services, databases, and message buses — and how they communicate. In Nodinite, these are Services grouped into Domain swimlanes:
| C4 L2 Element | Nodinite Entity | New Property | Example |
|---|---|---|---|
| Container (REST API) | Service | C4ContainerType = RestApi |
Mobile API |
| Container (Database) | Service | C4ContainerType = Database |
Customer DB |
| Container (Message Bus) | Service | C4ContainerType = MessageBus |
Azure Service Bus |
| Container (Batch Job) | Service | C4ContainerType = BatchJob |
Nightly Sync |
| Boundary / Layer | Domain | (no new property — ordering is per-diagram) | Experience APIs layer |
| Technology label | Service | C4Technology string |
"ASP.NET Core", "PostgreSQL" |
The Visual Result
A complete C4 Container diagram produced by Nodinite follows this layered structure:
┌─────────────────────────────────────────────────────────────────────────┐
│ [Person: Partner] [Person: Mobile User] [Person: Web User] │ ← Systems (C4Type=Person)
│ │ │ │ │
├─────────────────────────────────────────────────────────────────────────┤
│ Domain: Experience APIs │
│ [Service: EDI 850] [Service: EDI 810] [Service: Mobile API] ... │
├─────────────────────────────────────────────────────────────────────────┤
│ Domain: Process APIs │
│ [Service: Outbound] [Service: Inbound] [Service: PO Tracking] ... │
├─────────────────────────────────────────────────────────────────────────┤
│ Domain: System APIs │
│ [Service: Purchase Orders] [Service: Shipments] [Service: Invoice] │
├─────────────────────────────────────────────────────────────────────────┤
│ [System: ERP] [System: WMS] [System: Bank] [System: TM] [EDW] │ ← Systems (C4Type=ExternalSystem)
└─────────────────────────────────────────────────────────────────────────┘
↑ Connection lines with Label and Protocol drawn between nodes
This matches the API-led connectivity pattern used widely in MuleSoft, Azure API Management, and APIM governance documentation — now auto-generated from your live Repository data.
Two Complementary Render Modes
Every C4 diagram has exactly two render modes that share the same underlying relational data:
Mode 1 — Syncfusion Designer (Interactive)
The interactive canvas at /repository/c4diagrams/{id}/design. Uses the same Syncfusion SfDiagramComponent engine that powers the BPM Designer. Users:
- Drag Services into Domain swimlanes
- Place System actors above or below the lane stack
- Draw connectors with labels and protocols
- Resize lanes and reorder them
Every interaction writes a single targeted row to the database. Nothing is serialized as JSON. The designer is the source of truth for layout.
Mode 2 — Mermaid View (Portable)
The C4MermaidGenerator (server-side, Core library) reads the same relational rows and emits valid C4Container or C4Context Mermaid markup. The output is:
- Deterministic — same rows always produce the same Mermaid
- Embeddable — paste into Confluence, GitHub, Azure DevOps, Notion, or any Mermaid-capable tool
- Exportable — as PNG, SVG, raw
.md, or Draw.io XML via the export endpoint
These two modes coexist and complement each other. Neither depends on the other at runtime.
What Makes This Different from Static Tools
| Visio / draw.io | Enterprise Architect | Starlify | Nodinite C4 Diagrams | |
|---|---|---|---|---|
| Uses live Repository data | ❌ | ❌ | ⚠️ Partial | ✅ Always current |
| Auto-generates Mermaid C4 | ❌ | ❌ | ❌ | ✅ |
| Designer + live Mermaid preview | ❌ | ❌ | ❌ | ✅ Split-panel |
| Relational layout (not JSON blobs) | ❌ | ❌ | ❌ | ✅ SQL columns |
| Connected to monitoring & logging | ❌ | ❌ | ❌ | ✅ Right-click node |
| Zero marginal cost per diagram | ❌ | ❌ | ❌ | ✅ Included in Mapify |
| Industry-standard C4 notation | ✅ Manual | ✅ Manual | ✅ | ✅ Auto-generated |
Summary
C4 Diagrams in Nodinite is the only architecture visualization tool that:
- Reads from a live, CMDB-quality Repository that is already maintained by your integration teams
- Produces standard C4 notation without any manual drawing
- Stores layouts relationally so they are queryable, auditable, and conflict-safe
- Lets you switch instantly between an interactive swimlane designer and a portable Mermaid diagram
- Connects architecture documentation directly to operational monitoring and logging
It is not a replacement for your integration tooling — it is the architectural documentation layer that was always missing from it.