Noun definition
A Noun definition declares one Noun's properties, Verbs, and states at the Startup root; its body is the Noun's documentation.
| Property | Value |
|---|---|
| Path | nouns/ |
| Holds | Noun |
| Kind | file |
| Leaders | db-first, git-first |
| Team | Engineering Team |
| Written by | Change.merge |
| Compiled by | SoftwareBuilder |
Example
nouns/ in a Startup repository. Closewise, a sample business, declares a Close Noun.
---
extends: [Task]
properties:
client: Customer
period: string
balanced? : boolean
verbs:
reconcile: { through: date }
review: {}
close: {}
---
A Close is one month's books for one client, reconciled and reviewed.Props
The frontmatter keys the file takes. The body is its prose.
| Prop | Type | Required | Description |
|---|---|---|---|
extends | list of Noun | The Nouns it extends; it inherits their properties and Verbs. | |
properties | json | required | Each property and its type: a primitive, A | B for a closed set, or a Noun name for a reference; a name ending in ? is optional. |
verbs | json | The Verbs it declares beyond create, get, list, update and delete, each mapped to its inputs and their types; {} takes the record only. | |
states | json | Its lifecycle, compiled from the Verbs; set it only where the compiled form is wrong. |
Generates
SoftwareBuilder compiles it into these records, Verbs and routes.
| Kind | What |
|---|---|
| Records | Noun, Verb, Event |
| Verbs | Noun.create |
| Routes | /{ns}/, /{ns}/, POST /{ns}/ |