# Content

URL: /code/file-conventions/content · Id: `page:code/file-conventions/content`

> A file in content/ is one piece of Content, a post, an article or a changelog entry, with a draft and a published state.

A file in `content/[collection]/` is one piece of [Content](/business/nouns/content), such as a post or a changelog entry, with a draft and a published state.

```text
content/
├── blog/60-day-notices.mdx
└── changelog/2026-10-rent-roll-import.mdx
```

## Reference
MDX. The folder is the [Collection](/business/nouns/collection); the body is the Content, with the same [Component](/business/nouns/component) rules as a [Page](/business/nouns/page).

| Key | Type | Holds |
| --- | --- | --- |
| `title` | string | The headline |
| `author` | [Role](/business/nouns/role) path or person | Who wrote it |
| `status` | `draft \| published` | Its state |
| `publishedAt` | date | When it went live |

## Examples
### Minimal
```mdx title="content/changelog/2026-10-rent-roll-import.mdx"
---
title: Rent roll import
status: draft
---
Upload a CSV and every lease appears with its end date.
```

### Leaseline
```mdx title="content/blog/60-day-notices.mdx"
---
title: Why renewal notices go out at 60 days
author: marketing/content-lead
status: published
publishedAt: 2026-10-20
---
Most states require 30 days. Sixty days leaves time to negotiate, and a resident who has decided early is less likely to leave.
```

## What it builds
The [SiteBuilder](/code/builders/site) compiles each file into Content in its Collection.

- a `Content` record in `content/blog`
- `Content.publish` when its status turns `published`, and the [Event](/business/nouns/event) `Content.published`

## Routing
It has no route of its own. A [Site](/business/nouns/site) renders it through a `[key]` Page that is `about` the Collection; see [route segments](/code/file-conventions/route-segments).

## Good to know
- Content sits at the root because one Collection renders on several Sites.