# Noun definition

URL: /code/project-structure/noun-definition · Id: `convention:noun-definition`

> A Noun definition declares one Noun's properties, Verbs, and states at the Startup root; its body is the Noun's documentation.

A [Noun](/business/nouns/noun) definition declares one Noun's properties, [Verbs](/business/nouns/verb), and states at the [Startup](/business/nouns/startup) root; its body is the Noun's documentation.

| Property | Value |
| --- | --- |
| Path | `nouns/[Noun].mdx` |
| Holds | [Noun](/business/nouns/noun) |
| Kind | file |
| Leaders | db-first, git-first |
| Team | [Engineering Team](/agents/engineering) |
| Written by | [Change.merge](/business/nouns/change/merge) |
| Compiled by | [SoftwareBuilder](/code/builders/software) |

### Example
`nouns/Close.mdx` in a Startup repository. Closewise, a sample business, declares a `Close` Noun.

```mdx title="nouns/Close.mdx"
---
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](/business/nouns/noun) | No | The Nouns it extends; it inherits their properties and Verbs. |
| `properties` | `json` | Yes | 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` | No | 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` | No | Its lifecycle, compiled from the Verbs; set it only where the compiled form is wrong. |

### Generates
[SoftwareBuilder](/code/builders/software) compiles it into these records, Verbs and routes.

| Kind | What |
| --- | --- |
| Records | [Noun](/business/nouns/noun), [Verb](/business/nouns/verb), [Event](/business/nouns/event) |
| Verbs | [Noun.create](/business/nouns/noun/create) |
| Routes | `/{ns}/{nouns}`, `/{ns}/{nouns}/{id}`, `POST /{ns}/{nouns}/{noun}/{verb}` |