# 01 · Create the app

Generate the project with the CLI, install the dependencies and run it in mock mode. By the end of this step you have a Fayz app opening in your browser — with no environment variables to configure.

{% steps %}
{% step title="Generate the project" %}
The CLI creates a repo-per-app project. The shape is `fayz create <type> <name>`, where the type is `storefront`, `admin` or `member` and the name is kebab-case. Run it with `npx` so you don't install anything globally:

```bash
npx @fayz-ai/cli create admin my-store
```

Exact output:

```
✓ Created admin app "my-store"

  cd my-store
  npm install
  npm run dev
```

The command has no flags — it prints the manual next steps instead of running them.
{% /step %}

{% step title="Install and run" %}
Follow the three steps the CLI printed:

```bash
cd my-store
npm install
npm run dev
```

The app is a Vite project. The dev server starts on `http://localhost:5173`.
{% /step %}
{% /steps %}

{% callout type="tip" %}
✓ You should see: Vite announcing `Local: http://localhost:5173/` in the terminal and, when you open the URL, the app's initial screen with the name `my-store`. No env was needed — the backend is in `mock` mode.
{% /callout %}

For sample data when consuming the packages in code (mock providers start out empty), see [Mock and sample data](/en/docs/apps/mock-and-sample-data).

## What got generated

The command creates a small, readable app. Every file has a job:

| File | What it's for |
| --- | --- |
| `app.manifest.json` | The app config: surfaces, plugins, theme, locale and `backend.provider`. The file you'll edit most. |
| `src/main.tsx` | Entry point. Mounts the app from the manifest. |
| `src/plugins.generated.ts` | Maps the manifest's plugins to the platform factories (generated — don't edit by hand). |
| `src/registry.tsx` | Your custom code: your own blocks, pages and components. |
| `src/lib/fayz-runtime.ts` | The app runtime (see note below). |
| `vite.config.ts` · `index.html` · `tsconfig.json` | Standard config for a Vite + React app. |
| `.env.example` | Template for the Supabase variables — you copy it to `.env.local` in step 05. |
| `AGENTS.md` | A guide for AI agents (or humans) working on the app — an open standard, not tied to any vendor. |

{% callout type="info" %}
Today the local app renders an anchor screen that confirms the manifest wiring; the full runtime (shell, navigation, plugin screens) is provided by the Fayz platform. The manifest edits in the next steps are the **real configuration** that runtime consumes — which is why this whole tutorial is driven from `app.manifest.json`.
{% /callout %}

Leave `npm run dev` running: the next steps edit the manifest and you reload the page to see the effect.

---

[Next: 02 · Explore the anatomy →](/en/docs/tutorial/02-explore-the-anatomy)
