Files
likec4-template/docs/modeling-conventions.md
T
2026-08-24 14:44:36 +02:00

49 lines
1.9 KiB
Markdown

# LikeC4 modeling conventions
These conventions keep a model readable and consistent as it grows.
## Relationship direction
Arrows point from the initiating element to the receiving element:
> initiator -> receiver
A normal response to a request is implicit. Model a reverse relationship only when it represents an independent architectural interaction.
Use the most specific useful endpoints. Prefer a parent element when implementation detail would make the view harder to read.
## Relationship labels
- Give every relationship a concise, active, present-tense label.
- Prefer precise verbs over the generic `uses`.
- Describe one architectural responsibility per relationship.
- Put protocols and communication technologies in the relationship's `technology` property rather than its title.
## Relationship kinds
Use the smallest applicable relationship kind from `src/specification.c4`:
| Kind | Meaning |
| --- | --- |
| `sends` | Transfers a request or message to another service. |
The relationship title describes the specific interaction; the kind provides consistent classification.
```likec4
intakeDesk .sends routingDesk 'forwards sorting requests'
```
Do not introduce a relationship kind for a single exceptional interaction. Add one only when it captures a recurring architectural distinction, and update this table in the same change.
## Static and dynamic views
Static views show enduring dependencies and interactions. Use dynamic views when sequence, timing, callbacks, or a multi-step scenario is the subject of the diagram.
## Visual styling
Relationship semantics come from direction, kind, and label, not color alone. Keep styling simple unless a visual distinction materially improves a view.
## Validation
Run `npm run validate` after every model change. LikeC4 validation checks model correctness, but these project-specific naming and labeling conventions still require review.