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

# CLI Quickstart

> Use the Crave CLI to scaffold, configure, and launch a storefront template.

The Crave CLI bootstraps a production-ready storefront in a few minutes. It installs dependencies, wires environment variables, and can even start the dev server for you.

<Note>
  The CLI publishes as **`@craveup/cli`**. The older unscoped `craveup` package
  on npm is unmaintained and stops at 1.0.3 — install the scoped name. The
  installed command is still `craveup`, so `craveup login` and the rest are
  unchanged.
</Note>

## Install & run

Run the CLI anywhere you want to create the project directory:

```bash theme={null}
npx @craveup/cli init
```

The wizard will guide you through:

* Choosing a template (`storefront-default`, Tomodachi Sushi, or Xichuan Noodles)
* Selecting the published organization and location
* Naming the project directory
* Installing dependencies with your detected package manager
* Optionally starting `pnpm dev` so you can preview immediately

## Sign in

Sign in before scaffolding so the CLI can discover the organizations and locations your account can manage:

```bash theme={null}
npx @craveup/cli login    # browser OAuth; sign in or create a free account
npx @craveup/cli whoami   # confirm the active account
npx @craveup/cli logout   # remove local credentials
```

The session is stored in the macOS keychain, falling back to `~/.config/craveup/credentials.json`, and is **shared with the [CraveUp MCP server](/guides/ai/craveup-mcp-server)** — signing in through either one satisfies the other. On a headless or remote machine, use `craveup login --device` to pair with a code you open on any other device.

## Non-interactive usage

Prefer automation or CI pipelines? Use flags to skip prompts.

| Flag                 | Description                                                                      |
| -------------------- | -------------------------------------------------------------------------------- |
| `--template <id>`    | Force a template (`storefront-default`, `tomodachi-sushi`, or `xichuan-noodles`) |
| `--dir <name>`       | Set the target directory name                                                    |
| `--api-key <key>`    | Optional server-only CLI credential for non-interactive private API access       |
| `--location-id <id>` | Provide the location ID for single-location templates                            |
| `--org-slug <slug>`  | Provide the organization slug for organization templates                         |
| `--skip-install`     | Scaffold files without running the package manager                               |
| `--force`            | Overwrite an empty directory without confirmation                                |

Example:

```bash theme={null}
npx @craveup/cli init \
  --template storefront-default \
  --dir crave-storefront \
  --org-slug my-restaurant-group \
  --skip-install
```

## Environment variables

The CLI creates `.env.local` with placeholders. Update them before running the app:

```env theme={null}
# Public Storefront API origin. No browser API key is used.
NEXT_PUBLIC_CRAVEUP_API_URL=https://api.craveup.com
NEXT_PUBLIC_CRAVEUP_LOCATION_ID=loc_abc123
NEXT_PUBLIC_CRAVEUP_MERCHANT_SLUG=my-restaurant-group
```

> Tip: `CRAVEUP_DASHBOARD_URL`, `CRAVEUP_PARTNER_API_URL`, and a private `CRAVEUP_API_KEY` are CLI/server concerns. They are never written to a public storefront environment variable.

The merchant and location variables are standalone/local overrides. A hosted
`cravejs-storefront-template` resolves the merchant from its controlled
host/subdomain and the location from the `[locationId]` route instead of
duplicating tenant selection in production environment variables. The CLI does
not write `NEXT_PUBLIC_STOREFRONT_URL`; the template derives its canonical
metadata origin from the request host. Add that optional override manually only
when the deployed metadata origin must differ from the request host.

## Project anatomy

Every template ships with:

* **Next.js 16.3 + App Router** for modern server-first rendering
* **`@craveup/storefront-sdk@2.0.1`** pinned and preconfigured in `src/lib/storefront-client.ts`
* **Typed API helpers** co-located with app routes
* **Component library** for menu browsing, cart management, and checkout

Explore the generated repository after the CLI finishes:

```bash theme={null}
cd crave-storefront
pnpm install # if you skipped installation
pnpm dev --port 3000
```

You now have a fully functional storefront backed by live Crave data. Continue to the [Storefront SDK guide](./storefront-sdk) to integrate custom flows.
