> ## 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.

# Create a publication

> Create a Lettercamp project with npm create or lettercamp new, choose a preset, and control dependency installation.

Create a Lettercamp publication with the setup command. It copies the
[starter](https://github.com/lettercamp/lettercamp/tree/main/core/starter) bundled with your CLI version, asks for a
directory and preset, and installs the CLI inside your project.

## Create with npm

```bash theme={null}
npm create lettercamp@latest my-publication
cd my-publication
npm run dev
```

`npx create-lettercamp@latest` runs the same setup. If you already have a global
CLI installation, use `lettercamp new my-publication`.

The destination must be new or empty. If you omit it, interactive setup asks for
a directory with `my-lettercamp` as the default. Without a terminal, unanswered
questions use defaults.

## Setup options

| Option | Behavior |
| - | - |
| `--preset <name>` | Select a starter preset. Use `default` for the starter without a preset. |
| `--remote-assets` | Use already-hosted starter images and fonts instead of copying local asset files. |
| `-y, --yes` | Use defaults for unanswered questions. |
| `--no-install` | Create the files without running `npm install`. |

With `npm create`, place options after `--`:

```bash theme={null}
npm create lettercamp@latest my-publication -- --preset dark --yes
```

Presets apply initial settings and page metadata. You can edit the generated
settings and articles after setup; there is no ongoing preset dependency.

| Preset | Starting design |
| - | - |
| `default` | White background, Inter fonts, and a grid of articles. |
| `dark` | Black background, Geist fonts, and monochrome cover images. |
| `sand` | Warm background, Instrument Serif headings, and EB Garamond body text. |
| `code` | Dark background, green accents, Geist Mono fonts, and rows of articles. |
| `minimal` | A single column of articles with cover and author images removed from the starter pages. |

The starter includes sample articles, a React calculator, custom header and footer
examples, local images, and the fonts used by these presets. Setup applies the
selected preset and omits the `presets/` input folder from your new project.
See [Project structure](https://www.lettercamp.com/docs/project-structure.md) for what to edit.

## Optional: start with remote assets

By default, setup includes local images and fonts. Add `--remote-assets` if you
prefer to start with hosted URLs, for example before connecting a new publication
through [GitHub publishing](https://www.lettercamp.com/docs/git.md):

```bash theme={null}
npm create lettercamp@latest my-publication -- --remote-assets
```

With an existing CLI installation:

```bash theme={null}
lettercamp new my-publication --remote-assets
```

You can combine this option with `--preset`, `--yes`, and `--no-install`.
Setup writes hosted image URLs into the articles and settings, selects hosted
fonts, and omits the starter's `public/` directory. These assets are already
hosted; creation does not upload them or require a Lettercamp account. Viewing
them requires an internet connection.

Sites created through Lettercamp Cloud use the same starter with remote assets,
so starter images are available immediately in the rich editor. This option
only affects creation; images and other media you add later still follow the
normal [Cloud asset requirements](https://www.lettercamp.com/docs/publishing/deploy.md#local-images-and-cloud-assets).

## Project-local CLI

Setup creates a `package.json` with a pinned CLI version and these scripts:

| Command | Purpose |
| - | - |
| `npm run dev` | Start the local preview. |
| `npm run check` | [Check Cloud compatibility](https://www.lettercamp.com/docs/cli/check.md) without uploading. |
| `npm run build -- --site https://example.com` | Build static files for your public site URL. |
| `npm run deploy` | Publish to Lettercamp. |

For other commands, use `npx lettercamp`, for example `npx lettercamp --help`.
Existing global CLI installations are unchanged.

If you used `--no-install` or dependency installation failed, run `npm install`
inside the created directory before using the scripts.

See [Project structure](https://www.lettercamp.com/docs/project-structure.md) for the generated files.


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