# Pages

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

> A page file makes its folder a public URL of the Site, written as prose and Components with literal props.

A `page.mdx` file makes its folder a public URL of a [Site](/business/nouns/site). It is one [Page](/business/nouns/page): prose and [Components](/business/nouns/component) with literal props.

```text
sites/www/
├── page.mdx             /
└── pricing/page.mdx     /pricing
```

## Reference
MDX, parsed and never run. A prop is a literal or a record id; an expression fails the parse check.

| Key | Type | Holds |
| --- | --- | --- |
| `title` | string | The Page title and its default heading |
| `description` | string | The search and social summary |
| `about` | [Collection](/business/nouns/collection) or record | The [Thing](/business/nouns/thing) the Page reads; required under a `[key]` folder |
| `kind` | string | The Page type, such as `pricing` or `article` |

## Examples
### Minimal
```mdx title="sites/www/pricing/page.mdx"
---
title: Pricing
---
<PriceTable offers={["pro", "pro-annual"]} />
```

### Leaseline
```mdx title="sites/www/page.mdx"
---
title: Never miss a renewal
description: Leaseline tracks every lease end date and reminds residents for you.
---
<Hero heading="No renewal slips past its date" action="/checkout/pro" />

Leaseline reads your rent roll, counts down to each end date, and sends the notice at 60 days.

<Features items={["Rent roll import", "Notices at 60 days", "A weekly list of who has not answered"]} />
<Faq collection="faq/pricing" />
```

## What it builds
The [SiteBuilder](/code/builders/site) compiles each file into one Page.

- a `Page` at the folder's path
- its HTML, its Markdown twin, and an entry in `/sitemap.xml` and `/llms.txt`
- `Site.published` when the Site publishes

## Good to know
- New markup enters only as a new Component, never inline HTML. See [Components](/code/file-conventions/components).
- A [layout](/code/file-conventions/layouts) wraps every Page below its folder.