Skip to main content

sfnext-project-setup

Create and bootstrap a Storefront Next project, and learn its layout, npm scripts, and first-run workflow. Use when creating a new storefront, running `sfnext create-storefront` (`--vertical` starter theme, `--defaults`, `--template`, `--output-dir`), choosing between Business Manager Storefront Setup and the CLI, fixing `pnpm install` / Node 24 problems, copying `.env.default` to `.env`, asking "what does this folder do" or "which pnpm script do I run", or running `b2c sfnext` / `pnpm sfnext` commands for the first time. Do not use for config.server.ts or PUBLIC__ env var rules (use `storefront-next:sfnext-configuration`), building/pushing to Managed Runtime (use `storefront-next:sfnext-deployment`), or a conceptual tour of the architecture (use `storefront-next:sfnext-overview`).

معلومات المصدر

المستودع
SalesforceCommerceCloud/b2c-developer-tooling
آخر نشاط في المصدر
٤ أكتوبر ٢٠٢٦ في ١٦:٤٠
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥٦
التفرعات
٢٢

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
5 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
sfnext-project-setup
description
Create and bootstrap a Storefront Next project, and learn its layout, npm scripts, and first-run workflow. Use when creating a new storefront, running `sfnext create-storefront` (`--vertical` starter theme, `--defaults`, `--template`, `--output-dir`), choosing between Business Manager Storefront Setup and the CLI, fixing `pnpm install` / Node 24 problems, copying `.env.default` to `.env`, asking "what does this folder do" or "which pnpm script do I run", or running `b2c sfnext` / `pnpm sfnext` commands for the first time. Do not use for config.server.ts or PUBLIC__ env var rules (use `storefront-next:sfnext-configuration`), building/pushing to Managed Runtime (use `storefront-next:sfnext-deployment`), or a conceptual tour of the architecture (use `storefront-next:sfnext-overview`).
# Storefront Next Project Setup A Storefront Next project is a server-rendered React 19 / React Router 7 / Vite / Tailwind v4 app that runs on Managed Runtime (MRT). All SCAPI calls run server-side. You own the project code after it is created. **Read the project's own `AGENTS.md` first.** It ships in every project (`CLAUDE.md` is a copy) and is the authority for data-loading, Suspense, state, image, and navigation rules. This skill never overrides it. Detailed guides live in the project's `docs/README-*.md`. ## Prerequisites - Node.js >= 24 (`package.json` `engines`; MRT also runs Node 24) - pnpm >= 10.28 - A B2C Commerce instance with a SLAS public client, your organization ID, and the SCAPI short code (unless you only want the bundled demo backend) ## Choose how to start | Path | Use when | | --- | --- | | Business Manager **Storefront Setup** (GitHub or local-code workflow) | You want an instance-connected storefront. It creates the SLAS client, the MRT project/environments, initial config, and a first deployment. Reuse those resources; do not create replacement SLAS clients or MRT projects as routine setup. Use the downloaded `env.txt` as `.env`. Guides: [GitHub workflow](https://developer.salesforce.com/docs/commerce/sfnext/guide/sfnext-quick-start-create-bm-github.html), [local-code workflow](https://developer.salesforce.com/docs/commerce/sfnext/guide/sfnext-quick-start-create-bm.html) | | `sfnext create-storefront` | You want a fresh local project from a starter theme, with your own extension selection and credentials | | Clone / "Use this template" of a published starter repo | You prefer plain git; the project README lists the starter repositories | Never invent tenant/site IDs and never echo secrets from `env.txt`. ## Create a project with the CLI ```bash # Interactive: pick a starter theme, name, extensions, and credentials pnpm dlx @salesforce/storefront-next-dev create-storefront # or, with the b2c CLI (auto-installs the sfnext plugin on first use) b2c sfnext create-storefront # Non-interactive sfnext create-storefront -n my-storefront --vertical cosmetic -o ./projects sfnext create-storefront -n my-storefront --defaults ``` | Flag | Meaning | | --- | --- | | `-n, --name` | Project name | | `-V, --vertical` | Starter theme: `fashion` (default with `--defaults`), `cosmetic`, `foundations`, `footwear`, `furniture`, `luxury` | | `-t, --template` | Template repo URL or local path (overrides `--vertical`) | | `-b, --template-branch` | Branch or tag to clone | | `-d, --defaults` | Accept all defaults, no prompts (CI) | | `-o, --output-dir` | Where to create the project | What it does: shallow-clones the chosen starter, removes `.git`, asks which **extensions** to keep (and trims the rest; manage them later with `sfnext extensions ...`, see `storefront-next:sfnext-extensions`), prompts for the values in `config-meta.json` (SLAS client ID, organization ID, short code), and writes `.env` from `.env.default`. Then: ```bash cd my-storefront pnpm install pnpm dev # http://localhost:5173 ``` ## First run `.env.default` ships with a public demo backend so `cp .env.default .env && pnpm dev` boots. **Only `.env` is read**; `.env.default` is never loaded. Replace the three required values with your own before pointing at real data: ```bash PUBLIC__app__commerce__api__clientId=... PUBLIC__app__commerce__api__organizationId=... PUBLIC__app__commerce__api__shortCode=... ``` Restart the dev server after editing `.env`. Dev fails fast if the short code is missing. Everything else has defaults in `config.server.ts`; see `storefront-next:sfnext-configuration`. If the project should target your own site, also set `PUBLIC__app__defaultSiteId` and `PUBLIC__app__commerce__sites` (JSON array) as described there. Before shipping, run through the pre-launch gate in `storefront-next:sfnext-deployment` (demo analytics IDs, staging image host, demo credentials). ## Project layout (short form) ``` my-storefront/ ├── AGENTS.md / CLAUDE.md # Rules for coding agents -- read first ├── config.server.ts # All app config defaults (metadata / runtime / app) ├── config-meta.json # Values create-storefront prompts for ├── .env.default, .env # Required credentials; only .env is loaded ├── package.json # Scripts + storefrontNext version stamp ├── react-router.config.ts, vite.config.ts, vite-plugins/ ├── src/ │ ├── routes/ # Flat file routes (_app.*, _checkout.*, _empty.*, action.*, resource.*) │ ├── components/ (ui/ = primitives), hooks/, providers/, lib/, middlewares/ │ ├── extensions/ # Optional feature modules + config.json registry │ ├── theme/ # index.css entry, tokens/, overrides/ │ ├── locales/ # <lang-REGION>/translations.json │ ├── scapi/ # Generated + custom SCAPI clients │ ├── targets/ # UI target (extension point) system │ └── types/config.ts # AppConfig type ├── cartridges/app_storefrontnext_base # Page Designer metadata cartridge ├── docs/ # README-*.md guides, COMPATIBILITY.md, migrations/ ├── instructions/ # Extension install/uninstall guides (.mdc) ├── e2e/ # Playwright suite (own package) └── public/ ``` See [PROJECT-STRUCTURE.md](references/PROJECT-STRUCTURE.md) for route families, key files, and where to go for each concern. ## Scripts and CLI Run `pnpm <script>`. The most used: `dev`, `build`, `start` (preview the production build on :3000), `typecheck`, `lint`, `test`, `push`, `cartridge:generate|validate|deploy`, `config:inspect`, `config:push-env`, `bundlesize`, `storybook`. Full table in [SCRIPTS.md](references/SCRIPTS.md). The project's `package.json` `scripts` is the source of truth; grep it instead of guessing. The `sfnext` binary (from `@salesforce/storefront-next-dev`, already a project dependency) is also reachable as `pnpm sfnext <cmd>` or `b2c sfnext <cmd>` (the b2c CLI prefers the project-local copy when run inside the project). Command reference: [SFNEXT-CLI.md](references/SFNEXT-CLI.md). The template also exposes `pnpm b2c` for the b2c CLI. ## Conventions worth knowing up front - Application code is TypeScript/TSX only (`node scripts/check-typescript-only.js` flags stray `.js`). Linting is OxLint (`pnpm lint`, zero warnings), formatting is Biome (`pnpm format`). - Imports use the `@/` alias to `src/`. Server-only modules are suffixed `.server.ts`. - Use the site-aware `Link`/`NavLink` from `@/components/link` and `useNavigate` from `@/hooks/use-navigate`, not the React Router originals. - Server `loader`/`action` only; no `clientLoader`/`clientAction`. Await only critical data; return non-critical data as promises (`storefront-next:sfnext-data-fetching`). - Version compatibility between your project and the SDK: `package.json#storefrontNext` and `docs/COMPATIBILITY.md`. ## Troubleshooting | Symptom | Cause / fix | | --- | --- | | `pnpm install` fails or engine warning | Node < 24 or pnpm < 10.28; upgrade both | | Dev server exits immediately about short code | `PUBLIC__app__commerce__api__shortCode` missing in `.env` (not `.env.default`) | | SCAPI 401/403 | Client ID / organization ID / short code do not match the same org, or the SLAS client lacks scopes; run `sfnext setup-base-cartridge --slas-client-id <id>` only if the base cartridge scopes are the issue | | `.env` change ignored | Restart `pnpm dev`; check with `pnpm config:inspect` | | Unknown `sfnext` command via `b2c` | First use installs the plugin; run inside the project so the local copy is used | ## Finding more - Project `AGENTS.md` doc index and `docs/README-*.md` - `b2c docs search "<topic>" --category sfnext` (or MCP `docs_search`) for the published Storefront Next guides ## Related Skills - `storefront-next:sfnext-overview` - Architecture and concept tour - `storefront-next:sfnext-configuration` - config.server.ts, PUBLIC__ env vars, multi-site URLs - `storefront-next:sfnext-deployment` - Build, push to MRT, cartridge deploy, pre-launch gate - `storefront-next:sfnext-routing` - File routes and site-aware links - `storefront-next:sfnext-extensions` - Install, remove, and create extensions - `storefront-next:sfnext-theming` - Rebranding `src/theme/` - `b2c-cli:b2c-mrt` - Generic MRT project/environment management
عرض على GitHub