How Backend, API, and Step Nodes Are Styled in Diagram Design: A Complete Guide
Backend, API, and step nodes in Diagram Design are styled through a semantic token system defined in style-guide.md and type-process.md, with each node type mapping to specific fill and stroke color tokens rather than hard-coded values.
This system ensures visual consistency across all diagram types in the cathrynlavery/diagram-design repository. Rather than scattering hex codes throughout the codebase, every styling decision flows from a centralized token table that enforces brand alignment and accessibility compliance.
How the Semantic Token System Works
The Diagram Design framework treats color as semantic meaning. Each node category receives a named token that translates to concrete colors at render time.
backendtoken → white fill (#ffffff) withinkstrokeexternaltoken → light tint ofinkfill (ink @ 0.03) with mutedinkstroke (ink @ 0.30)- step headers → default gray or accent-tinted fill depending on focal state
This abstraction layer means designers can adjust the entire palette by modifying token values in style-guide.md without touching individual diagram definitions.
Backend Node Styling
Backend nodes represent internal services, databases, and infrastructure components. According to the canonical token table in [style-guide.md](https://github.com/cathrynlavery/diagram-design/blob/main/skills/diagram-design/references/style-guide.md#L13-L16), these nodes use:
| Property | Value | Token |
|---|---|---|
| Fill | #ffffff (white) |
backend |
| Stroke | ink (primary text color) |
backend |
The white fill intentionally signals internal, trusted systems against the diagram's paper background. The ink stroke ensures sufficient contrast for WCAG AA compliance.
# Backend node declaration
nodes:
- lane: "BCK"
step: 0
title: "DB-Import"
sub: "raw → table"
chips: { in: null, out: "CSV" }
color: "#ffffff" # Resolved from backend token
API and External Node Styling
External integration points—APIs, third-party services, and outbound connectors—use the external token. Per [style-guide.md](https://github.com/cathrynlavery/diagram-design/blob/main/skills/diagram-design/references/style-guide.md#L15-L17):
| Property | Value | Token |
|---|---|---|
| Fill | ink @ 0.03 |
external |
| Stroke | ink @ 0.30 |
external |
The subtle tinting visually distinguishes external dependencies from internal backend systems without introducing competing accent colors. This follows the repository's one-accent rule: only a single focal accent may appear per diagram.
# API/external node declaration
nodes:
- lane: "API"
step: 1
title: "REST-Call"
sub: "GET /data"
chips: { in: "JSON", out: null }
color: "#e0e0e0" # Approximation of ink @ 0.03
Step Header Chip Styling
Step headers appear as pill-shaped chips above each column in process diagrams. Their styling bifurcates based on focal state, defined in [type-process.md](https://github.com/cathrynlavery/diagram-design/blob/main/skills/diagram-design/references/type-process.md#L12-L33):
| State | Fill | Number Text |
|---|---|---|
| Default | rgba(45,49,66,0.12) (light gray) |
ink |
| Focal step | rgba(235,108,54,0.20) (accent-tint) |
accent |
The focal step override draws visual attention to the diagram's primary action or decision point. The 20% opacity accent fill provides sufficient presence without overwhelming adjacent nodes.
steps:
- { number: "1", label: "Ingest" } # Default styling
- { number: "2", label: "Transform", focal: true } # Accent-tint header
Key Source Files
The complete styling pipeline spans three reference documents:
style-guide.md— Token definitions forbackend,external,ink,accent, andpaper; contrast constraints; one-accent rule enforcementtype-process.md— Step header geometry, focal state overrides, and node layout algorithmstype-architecture.md— Backend tier grouping patterns for system topology diagrams
Complete Working Example
This YAML demonstrates all three node types in a single process diagram:
lanes:
- { name: ["BACKEND"], key: "BCK" }
- { name: ["API"], key: "API" }
steps:
- { number: "1", label: "Ingest" }
- { number: "2", label: "Transform", focal: true }
nodes:
# Backend: backend token → white fill, ink stroke
- lane: "BCK"
step: 0
title: "DB-Import"
sub: "raw → table"
chips: { in: null, out: "CSV" }
# API/external: external token → light ink fill, muted ink stroke
- lane: "API"
step: 1
title: "REST-Call"
sub: "GET /data"
chips: { in: "JSON", out: null }
The generator resolves tokens through style-guide.md, then applies step header styling per type-process.md.
Summary
- Backend nodes use the
backendtoken with white fill andinkstroke, defined instyle-guide.mdlines 13-16 - API/external nodes use the
externaltoken with tintedinkfill and muted stroke, defined instyle-guide.mdlines 15-17 - Step headers automatically render with gray fills or accent-tinted focal states per
type-process.mdlines 12-33 - All styling flows through semantic tokens, ensuring consistent branding and WCAG AA contrast compliance
- The one-accent rule preserves clear visual hierarchy by limiting accent usage to a single focal element
Frequently Asked Questions
How do I change the color of all backend nodes in my diagrams?
Modify the backend token value in style-guide.md. Because the generator resolves this token at render time, updating one line propagates the change across every backend node in every diagram type.
What is the difference between ink @ 0.03 and ink @ 0.30 in external nodes?
These are opacity-modified tokens. ink @ 0.03 produces a nearly transparent fill (3% opacity) for subtle background presence, while ink @ 0.30 at 30% opacity provides visible but muted stroke definition. This progression creates depth without introducing new hues.
Why does the focal step use an accent tint instead of solid accent color?
Per the contrast constraints in style-guide.md, solid accent (#EB6C36) on paper backgrounds passes WCAG AA for large text but risks vibration at small sizes. The 20% opacity tint (rgba(235,108,54,0.20)) maintains accessibility while creating appropriate figure-ground separation for header chips.
Can I create custom node types with their own tokens?
The repository's token system is extensible, but adding tokens requires updating style-guide.md and verifying contrast relationships against the paper background. The backend and external tokens represent the two established semantic categories for nodes: internal systems and external integrations.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →