---
title: "Set up the project"
description: "Scaffold the Payload starter, configure local services and verify the first page."
requested_language: nl
language: en
translation_notice: "This page isn't translated yet"
url: https://docs.systhema.app/nl/next/guides/build-a-site/setup
version: unreleased (main)
docs_index: https://docs.systhema.app/nl/next/llms.txt
---
> This page isn't translated yet. Showing English.


## Goal

Create a working Northline site with the Payload template. Use SQLite for local learning, or choose PostgreSQL in the wizard when you already have a database.

## 1. Authenticate and install the CLI

Systhema packages use a private registry. Access comes with a Systhema licence and a GitHub token with `read:packages`. Complete [registry access](https://docs.systhema.app/nl/next/getting-started/registry-access.md) before installing.

```bash
pnpm add -g @systhemaui/cli
systhema create northline --template payload
cd northline
```

Choose database, email, forms and locales in the wizard. Enable Forms for the enquiry page. You can change these choices later with `systhema setup`.

A non-interactive local scaffold uses verified create flags:

```bash
systhema create northline --template payload --db sqlite --email none --forms on --yes
```

Use one scaffold command, not both. Email is configured in [Forms and SEO](forms-and-seo.md).

## 2. Inspect the generated environment

The CLI prepares the environment from your choices. Keep secrets outside version control. Inspect `.env` and `.env.example`; do not replace generated secrets with tutorial placeholders.

```bash
systhema info
systhema doctor
```

The frontend origin is `NEXT_PUBLIC_SERVER_URL`. `DATABASE_URI` must match the adapter in `src/payload/database.ts`. `PAYLOAD_SECRET` and `SYSTHEMA_API_SECRET` must have real values.

## 3. Find the project boundaries

```text title="Starter structure"
systhema.config.ts
src/
  payload.config.ts
  payload/
    database.ts
    email.ts
    forms.ts
  tokens/
    manifest.json
  app/
    layout.tsx
    (site)/
      template.tsx
      globals.css
      (systhema)/
    (payload)/
```

Edit `src/payload.config.ts` and your site template. Keep application routes outside `(systhema)`. Do not edit generated token artifacts or managed CMS routes.

## 4. Sync and start locally

```bash
pnpm sync
pnpm dev
```

The Payload starter's `sync` script regenerates Systhema artifacts, Payload types and the import map. Open the local site and `/admin`. Create the first user through the initial setup screen.

> [!NOTE]
> The Next.js starter's sync responsibilities differ because it has no Payload types or import map. Use the scripts in the scaffolded project's `package.json`.

## Check your work

- `/admin` loads and you can sign in.
- `.systhema/references/tokens/_index.toon` exists after sync.
- `systhema doctor` reports no unresolved setup errors.
- Your environment secrets are not staged for commit.

Next: [Create the design system](design-system.md).
