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

# Project structure

> Find your publication settings, articles, components, and npm scripts in a Lettercamp project.

A Lettercamp publication is a folder containing `settings.json` and `pages/`.
Run CLI commands from this folder so they use the right publication.

```text theme={null}
my-publication/
├── settings.json
├── package.json
├── .nvmrc
├── .gitignore
├── pages/
│   └── lorem-ipsum-dolor-sit-amet.mdx
├── components/
│   ├── ReadingTimeCalculator.jsx
│   └── layouts/                  # Optional overrides you add
├── examples/layouts/
└── public/
    ├── images/
    └── fonts/
```

| Path | Purpose |
| - | - |
| `settings.json` | [Site settings](https://www.lettercamp.com/docs/configuration.md) and publication design. |
| `AGENTS.md` | Guidance and documentation links for agents working on your publication. |
| `pages/` | Markdown (`.md`) and MDX (`.mdx`) articles, directly inside this folder. |
| `components/` | Local [React components](https://www.lettercamp.com/docs/react-components.md) and their styles. `elements/` is an optional subfolder for reusable UI. |
| `components/layouts/` | Optional [layout overrides](https://www.lettercamp.com/docs/custom-layout.md#override-files-and-fallback); absent files use built-in defaults. |
| `package.json` | Project-local CLI version and `dev`, `build`, and `deploy` scripts, generated during setup. |
| `.nvmrc` | Node.js version for version managers that support it. |
| `.gitignore` | Excludes dependencies, build output, and environment files from Git. |
| `examples/layouts/` | Optional [layout and card examples](https://www.lettercamp.com/docs/custom-layout.md) to copy into `components/layouts/`. |
| `public/images/` | Local branding, cover images, and author portraits. |
| `public/fonts/` | Bundled font files and licenses used by the starter presets. |

Setup also generates `package-lock.json` when npm installs dependencies. Commit
the manifest and lockfile to keep the CLI version consistent after cloning.

The homepage is generated from your articles. You do not need a
`pages/index.mdx` file; the renderer excludes `index.md` and `index.mdx` from
article pages. See [Homepage](https://www.lettercamp.com/docs/design/homepage.md) to change the heading and feed.

## Assets

The default CLI setup includes local images and fonts. The optional
[`--remote-assets` setup](https://www.lettercamp.com/docs/cli/new#optional-start-with-remote-assets) uses hosted
URLs and omits `public/`. Sites created through Lettercamp Cloud use remote assets.

For standalone sites, put files in `public/`: `public/images/cover.jpg` is available
at `/images/cover.jpg`. Local preview serves these files, and static builds copy
them into the output. The `assets/` source folder is not a public file server.

[`lettercamp deploy`](https://www.lettercamp.com/docs/publishing/deploy#local-images-and-cloud-assets) uploads
referenced local JPEG, PNG, WebP, and GIF images and substitutes hosted URLs in
the deployment copy. Your local files keep their original paths. It does not
deploy the `public/` directory as static files.

Before deploying a starter created with local assets to Cloud, set `design.typography.localFonts` to
`false` so its fonts load from the CDN. Custom fonts and other media need hosted
URLs. See [Typography](https://www.lettercamp.com/docs/design/typography.md#local-fonts) and
[Cloud publishing](https://www.lettercamp.com/docs/publishing/deploy.md#local-images-and-cloud-assets) for details.

For the full list of source folders included in a deployment, see
[Files included in a deployment](https://www.lettercamp.com/docs/publishing/deploy.md#files-included-in-a-deployment).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.