> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stage.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# Where your content lives

> What Stage stores, how the site reads it, and how to take a copy.

The site reads content at build time and ships HTML. Visitors never talk to Stage.

## Stored

| Table      | Holds                            | Read with           |
| ---------- | -------------------------------- | ------------------- |
| `pages`    | Slug, title, sections, SEO       | `getSitePages()`    |
| `articles` | Posts                            | `getArticles()`     |
| `forms`    | Forms                            | `getForms()`        |
| `globals`  | Header, footer, site-wide values | `getGlobals()`      |
| `media`    | Uploads: hash, size, alt text    | `getMediaMetaMap()` |

Images and video live on the CDN at URLs the rows contain. Full list: [data model](/developers/reference/data-model).

One page row:

```json theme={null}
{
  "slug": "about",
  "title": "About",
  "version": 12,
  "seo": { "description": "Who we are and how we work." },
  "components": [
    { "id": "hero", "type": "hero",
      "props": { "title": "About us", "body": "<p>Small team, long projects.</p>",
                 "image": "https://cdn.example.com/org/3f9a…-1920.webp", "imageVideo": "" } },
    { "id": "team", "type": "team-grid",
      "props": { "heading": "The team", "members": [
        { "id": "c_8S6FSMAj", "name": "Ana Ruiz", "role": "Design" },
        { "id": "c_KPsHeZwE", "name": "Tom Lee", "role": "Engineering" }
      ] } }
  ]
}
```

## If Stage is unreachable

|                   | Works |
| ----------------- | ----- |
| The deployed site | Yes   |
| Images and video  | Yes   |
| Form submits      | No    |
| A rebuild         | No    |
| `/admin`          | No    |

The last build keeps serving. A build that cannot reach Stage fails and leaves it in place.

## Take a copy

```ts theme={null}
import { writeFileSync } from "node:fs";
import { StageClient, getPages, getArticles, getGlobals } from "@sp-stage/sdk";

StageClient.init({
  dbUrl: process.env.STAGE_DB_URL!,
  publicKey: process.env.STAGE_PUBLIC_KEY!,
  orgId: process.env.ORG_ID!,
});

writeFileSync("content.json", JSON.stringify({
  pages: await getPages(),
  articles: await getArticles(),
  globals: await getGlobals(),
}, null, 2));
```

Media files are at the URLs in the rows. Form submissions come from us on request.

## Who changes what

| Change                                                      | Who                  |
| ----------------------------------------------------------- | -------------------- |
| Text, images, list items, palette sections, articles, forms | Editors, in `/admin` |
| Pages, sections, components, palettes, drafts               | Anyone with the repo |
| Globals, deploy settings                                    | Stage, on request    |
