Skip to content

{Feature Name}

FieldValue
StatusActive / Deprecated
Last updated

Ubiquitous Language

TermDefinitionMaps ToDo Not Use
{Term}{Type}

Aggregate

{AggregateName}

Describe the aggregate root, identity, and lifecycle.

State transitions

Annotate each transition with the test class and method prefix pattern that covers it, for example (PostTests.Publish_*). A transition with no annotation is a coverage gap until a test spec row exists.

stateDiagram-v2
[*] --> Draft : Create (PostTests.Create_*)
Draft --> Published : Publish (PostTests.Publish_*)
Published --> Archived : Archive (PostTests.Archive_*)

Invariants

Invariants Under Test

InvariantUse case docTest classTest method
Post can only be published once{use-case}.mdPostTestsPublish_WhenPostIsAlreadyPublished_ShouldThrowPostAlreadyPublishedException

Add a row when a domain invariant has automated coverage. Link to the use case test spec for full scenario and variation detail.


Domain Events

EventRaised whenPayloadOutbox required
{Aggregate}{PastTenseVerb}Yes / No

Reactions (if any)

EventHandlerSide effect interfaceNotes

Persistence

TablePurpose
{table}

Use Cases

Use caseOperation docTest specBackendUI appearances
{Use case name}{use-case}.md{use-case}.tests.md{Feature}/{UseCase}/apps/web/features/{feature}/{use-case}/, apps/admin/features/...

List every frontend app path where the use case has UI. Omit apps that have no surface for this use case.