Nodes and Edges
Configure graph diagram nodes with typed properties, constraints, and per-property projections. Create edges with labels and style nodes with custom colours. Model nodes support search, API, and persistence projections.
Nodes and edges are the building blocks of graph diagrams. Nodes represent entities with optional properties and constraints. Edges connect nodes and can have labels to describe relationships.
Try It: Interactive Example
Explore this diagram to understand nodes and edges. Double-click on the Customer node (blue) to see its typed properties including required fields and unique constraints. Notice the edge labels like "places" and "contains" that describe relationships.
Node Properties
Every node has these core properties:
Typed Properties
Nodes can have typed properties like an ERD:
| Property | Description |
|---|---|
| Name | Property name (required) |
| Type | Data type (String, Number, Boolean, etc.) |
| Required | Marks the property as required |
| Nullable | Allows null values |
| Unique | Enforces uniqueness |
| Indexed | Indicates indexing |
| Default Value | Default when not specified |
| Description | Documentation for the property |
Constraint Badges
Properties display visual badges for constraints:
Per-Property Projections
In graph-db mode, each property supports projection flags that control how the field appears across derived artefacts. Projections are relevant for both standalone graph diagrams and the project model (model.neoarc).
| Projection | Purpose |
|---|---|
| Search | Property is included in search indices. Controls whether the field is searchable, filterable, or used as a facet |
| API | Property is included in API responses. Controls field visibility in generated API schemas |
| Persistence | Property is included in the persistence layer. Controls whether the field is stored in the database |
| Custom | User-defined projection for project-specific concerns (e.g. audit, reporting, analytics) |
Edge Structure
Edges connect two nodes with optional labels:
Creating Edges
Editing Edge Labels
Node Styling
Nodes render as circles with configurable colours:
| Property | Value |
|---|---|
| Fill | White (light) or dark grey (dark theme) |
| Stroke | Default blue (#4A90D9), customisable per node |
| Stroke Width | 5px |
| Min Radius | 30px (expands with label length) |
| Font | System UI, 14px |
Edge Styling
Edges render as lines with arrows:
| Property | Value |
|---|---|
| Stroke Colour | Grey (#666666 light, #888888 dark) |
| Stroke Width | 2px |
| Arrow | Solid fill matching stroke |
| Labels | 12px font, positioned along the edge |
Selection and Editing
| Action | Result |
|---|---|
| Click | Select a single node or edge |
| Ctrl+Click | Add to selection (multi-select) |
| Double-click node | Edit label |
| Double-click edge | Edit label |
| Delete/Backspace | Remove selected elements |
| Escape | Clear selection |
Node Dragging
Drag nodes to reposition them: