Nodes & Edges

Nodes and edges are the atoms of your architecture. Nodes represent discrete things — services, databases, APIs, domains — and edges represent the relationships between them. Together, they form the graph that is your architecture model.

Nodes

Every node on a board has a name, a visual representation, an archetype that gives it meaning, and optional tags, attributes, and source references. You drag it onto the canvas, label it, classify it — and it becomes part of your living architecture.

What a node carries

PropertyWhat it is
NameDisplay name, 2–100 characters
Visual primitiveHow the node renders — plain node, container, region, callout, text, axis, or annotation
ArchetypeDomain meaning — "API Gateway", "PostgreSQL", "Message Queue", etc.
ParentOptional parent node for hierarchical nesting
TagsLabels for filtering and categorization
Child layerOptional link to a nested board for drill-down
Source referencesTraceability links back to the source documents that justify this node

Visual primitive types

Every node has a visual primitive that determines its fundamental visual behavior. These fall into three broad families:

Discrete, standalone elements — the things in your architecture.

PrimitiveDescriptionExample use
NodeDiscrete entity — rectangles, circles, hexagonsSystems, services, decisions, events
CalloutFocused annotation attached to an elementWarnings, tips, deprecation notices
TextFreeform text blockTitles, explanations, documentation

Element archetypes

Archetypes give nodes semantic meaning beyond their visual shape. An archetype defines what kind of architectural element a node represents — "API Gateway", "Message Queue", "PostgreSQL Database" — along with styling, standards, and containment rules.

Archetype groups
GroupExamples
AWSLambda, S3, RDS, ECS
AzureFunctions, Blob Storage, Cosmos DB
GCPCloud Run, BigQuery, Pub/Sub
VercelEdge Functions, KV Store
C4 ModelPerson, System, Container, Component
CommonGeneric service, database, API, queue
IntegrationsGitHub, Slack, Jira connectors
DatabasePostgreSQL, MongoDB, Redis

Each archetype specifies which other archetypes it can nest. A Domain container can contain Systems; a System can contain Services. This enforces structural correctness — you can't accidentally put a VPC inside a Lambda function.

Note

Archetypes aren't just cosmetic — they carry containment rules, styling defaults, and semantic meaning. Picking the right archetype means your board stays structurally valid as it grows.

Parent-child hierarchy

Nodes support hierarchical nesting. A node inside a container is visually and logically grouped with its siblings. Combined with child layers, this gives you multi-level zoom: overview → domain → service → internal components.

Edges

Edges connect nodes, representing relationships like dependencies, data flows, or API calls.

What an edge carries

PropertyWhat it is
SourceThe originating node
TargetThe destination node
RelationLabel describing the relationship (e.g., "calls", "depends on", "publishes to")
ArchetypeOptional archetype for edge styling
TagsLabels for filtering
Source referencesTraceability back to source documents

Every edge reads naturally: "Payment Service calls User Database." You pick the relation label when you draw the edge — or let a governing source do it for you during sync.

Warning

Every node and edge carries source references for traceability — links back to the exact source documents (and even line numbers) that justify its existence. This is how ContextDX keeps your architecture honest.

Verify your node setup

  • Nodes have descriptive names (not "Service 1", "Node A")
  • Correct visual primitive chosen (node vs container vs region)
  • Archetype assigned for semantic meaning
  • Parent-child nesting reflects real domain boundaries
  • Edges have meaningful relation labels
  • Source references attached where applicable

What's next