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.
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:
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.
Follow the three steps the CLI printed:
cd my-store npm install npm run dev
The app is a Vite project. The dev server starts on http://localhost:5173.
✓ 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.
For sample data when consuming the packages in code (mock providers start out empty), see 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. |
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.
Leave npm run dev running: the next steps edit the manifest and you reload the page to see the effect.