@cimplify/cli 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-ZJQJZJEF.mjs → add-FP4UGVGE.mjs} +2 -2
- package/dist/{chunk-5XH72JMJ.mjs → chunk-27QJ5JQI.mjs} +2 -2
- package/dist/{chunk-TAMGCHIL.mjs → chunk-2BO4H6VP.mjs} +11 -3
- package/dist/{chunk-D7D75ONX.mjs → chunk-BXM4AWJQ.mjs} +36 -0
- package/dist/{chunk-XSWWWO6H.mjs → chunk-SN6E73KY.mjs} +11 -11
- package/dist/{chunk-MQMNWLMU.mjs → chunk-VE74N3YS.mjs} +0 -1
- package/dist/{deploy-WCZOGMED.mjs → deploy-UAPJ35KZ.mjs} +4 -4
- package/dist/{dev-4HKIXWXX.mjs → dev-OPKFS77L.mjs} +2 -2
- package/dist/dispatcher.mjs +16 -16
- package/dist/{domains-3RJ4T5IX.mjs → domains-INY76L24.mjs} +2 -2
- package/dist/{env-LBYBCBWV.mjs → env-CMNNPAA4.mjs} +2 -2
- package/dist/{link-SEJNW7JS.mjs → link-PDITLRI4.mjs} +1 -1
- package/dist/{list-D4JC2VWY.mjs → list-MUARZ6RW.mjs} +2 -2
- package/dist/{login-MRYWLQRY.mjs → login-4OB5ZIR4.mjs} +1 -1
- package/dist/{logs-LK7CMBCE.mjs → logs-VQCYRAHN.mjs} +2 -2
- package/dist/{projects-QJUGOCQZ.mjs → projects-KBFX4Q3E.mjs} +2 -2
- package/dist/{repo-MV22OHON.mjs → repo-J5LZOBZZ.mjs} +3 -3
- package/dist/{rollback-XO7RIG2A.mjs → rollback-Z74AP6PL.mjs} +3 -3
- package/dist/{status-7CMVLD54.mjs → status-BYHS4SG3.mjs} +2 -2
- package/package.json +1 -1
- package/templates/storefront-bakery/.claude/skills/cimplify-storefront/SKILL.md +10 -10
- package/templates/storefront-bakery/.cursor/rules/cimplify-storefront.mdc +1 -1
- package/templates/storefront-bakery/AGENTS.md +3 -3
- package/templates/storefront-bakery/CLAUDE.md +1 -1
- package/templates/storefront-bakery/README.md +7 -7
- package/templates/storefront-bakery/package.json +2 -2
- package/templates/storefront-fashion/.claude/skills/cimplify-storefront/SKILL.md +10 -10
- package/templates/storefront-fashion/.cursor/rules/cimplify-storefront.mdc +1 -1
- package/templates/storefront-fashion/AGENTS.md +3 -3
- package/templates/storefront-fashion/CLAUDE.md +1 -1
- package/templates/storefront-fashion/README.md +8 -8
- package/templates/storefront-fashion/package.json +2 -2
- package/templates/storefront-grocery/.claude/skills/cimplify-storefront/SKILL.md +10 -10
- package/templates/storefront-grocery/.cursor/rules/cimplify-storefront.mdc +1 -1
- package/templates/storefront-grocery/AGENTS.md +3 -3
- package/templates/storefront-grocery/CLAUDE.md +1 -1
- package/templates/storefront-grocery/README.md +7 -7
- package/templates/storefront-grocery/package.json +2 -2
- package/templates/storefront-restaurant/.claude/skills/cimplify-storefront/SKILL.md +10 -10
- package/templates/storefront-restaurant/.cursor/rules/cimplify-storefront.mdc +1 -1
- package/templates/storefront-restaurant/AGENTS.md +3 -3
- package/templates/storefront-restaurant/CLAUDE.md +1 -1
- package/templates/storefront-restaurant/README.md +7 -7
- package/templates/storefront-restaurant/package.json +2 -2
- package/templates/storefront-retail/.claude/skills/cimplify-storefront/SKILL.md +10 -10
- package/templates/storefront-retail/.cursor/rules/cimplify-storefront.mdc +1 -1
- package/templates/storefront-retail/AGENTS.md +3 -3
- package/templates/storefront-retail/CLAUDE.md +1 -1
- package/templates/storefront-retail/README.md +8 -8
- package/templates/storefront-retail/package.json +2 -2
- package/templates/storefront-services/.claude/skills/cimplify-storefront/SKILL.md +10 -10
- package/templates/storefront-services/.cursor/rules/cimplify-storefront.mdc +1 -1
- package/templates/storefront-services/AGENTS.md +3 -3
- package/templates/storefront-services/CLAUDE.md +1 -1
- package/templates/storefront-services/README.md +7 -7
- package/templates/storefront-services/package.json +2 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { pollDeployment } from './chunk-
|
|
3
|
-
import { fetchCloneToken } from './chunk-
|
|
2
|
+
import { pollDeployment } from './chunk-2BO4H6VP.mjs';
|
|
3
|
+
import { fetchCloneToken } from './chunk-27QJ5JQI.mjs';
|
|
4
4
|
import { promptYesNo } from './chunk-L6474RPL.mjs';
|
|
5
|
-
import { TOKEN_PURPOSE, ENV_SCOPE, DEPLOY_TRIGGER, DEPLOYMENT_STATUS } from './chunk-
|
|
6
|
-
import { parseArgs, flagBool, flagString } from './chunk-
|
|
5
|
+
import { TOKEN_PURPOSE, ENV_SCOPE, DEPLOY_TRIGGER, DEPLOYMENT_STATUS } from './chunk-VE74N3YS.mjs';
|
|
6
|
+
import { parseArgs, flagBool, flagString } from './chunk-BXM4AWJQ.mjs';
|
|
7
7
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
8
8
|
import { readAuth, readProjectLink, writeProjectState } from './chunk-JJYWETGA.mjs';
|
|
9
9
|
import { CliError, CLI_ERROR_CODE, step, info, dim, success, result, EXIT_CODE } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { parseEnvFile, formatEnvFile } from './chunk-4YSOZ6LY.mjs';
|
|
3
|
-
import { ENV_SCOPE, PUBLIC_ENV_PREFIX } from './chunk-
|
|
4
|
-
import { parseArgs, flagBool } from './chunk-
|
|
3
|
+
import { ENV_SCOPE, PUBLIC_ENV_PREFIX } from './chunk-VE74N3YS.mjs';
|
|
4
|
+
import { parseArgs, flagBool } from './chunk-BXM4AWJQ.mjs';
|
|
5
5
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
6
6
|
import { readAuth, readProjectLink } from './chunk-JJYWETGA.mjs';
|
|
7
7
|
import { info, CliError, CLI_ERROR_CODE, dim } from './chunk-NZ4RG62Z.mjs';
|
package/dist/dispatcher.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { TEMPLATES } from './chunk-
|
|
2
|
+
import { TEMPLATES } from './chunk-SN6E73KY.mjs';
|
|
3
3
|
|
|
4
4
|
// package.json
|
|
5
5
|
var package_default = {
|
|
6
|
-
version: "0.2.
|
|
6
|
+
version: "0.2.1"};
|
|
7
7
|
|
|
8
8
|
// src/dispatcher.ts
|
|
9
9
|
var VERSION = package_default.version;
|
|
@@ -96,7 +96,7 @@ Deploy flags:
|
|
|
96
96
|
--no-poll Return after enqueue; don't stream progress
|
|
97
97
|
|
|
98
98
|
Env flags:
|
|
99
|
-
--scope <scope> development | preview |
|
|
99
|
+
--scope <scope> development | preview | production
|
|
100
100
|
--show Reveal non-secret values in \`env ls\`
|
|
101
101
|
--out <path> Output path for \`env pull\` (default .env.local)
|
|
102
102
|
--file <path> Input path for \`env push\` (default .env.local)
|
|
@@ -112,22 +112,22 @@ Need the mock storefront server? It ships with @cimplify/sdk:
|
|
|
112
112
|
bunx @cimplify/sdk mock [flags] Boot the local Cimplify API mock
|
|
113
113
|
`;
|
|
114
114
|
var COMMANDS = {
|
|
115
|
-
login: () => import('./login-
|
|
115
|
+
login: () => import('./login-4OB5ZIR4.mjs'),
|
|
116
116
|
logout: () => import('./logout-ZFZLSJ32.mjs'),
|
|
117
117
|
whoami: () => import('./whoami-INHDUHWA.mjs'),
|
|
118
|
-
projects: () => import('./projects-
|
|
119
|
-
link: () => import('./link-
|
|
118
|
+
projects: () => import('./projects-KBFX4Q3E.mjs'),
|
|
119
|
+
link: () => import('./link-PDITLRI4.mjs'),
|
|
120
120
|
unlink: () => import('./unlink-5ABCT7B6.mjs'),
|
|
121
|
-
deploy: () => import('./deploy-
|
|
122
|
-
rollback: () => import('./rollback-
|
|
123
|
-
env: () => import('./env-
|
|
124
|
-
domains: () => import('./domains-
|
|
125
|
-
logs: () => import('./logs-
|
|
126
|
-
status: () => import('./status-
|
|
127
|
-
dev: () => import('./dev-
|
|
128
|
-
repo: () => import('./repo-
|
|
129
|
-
list: () => import('./list-
|
|
130
|
-
add: () => import('./add-
|
|
121
|
+
deploy: () => import('./deploy-UAPJ35KZ.mjs'),
|
|
122
|
+
rollback: () => import('./rollback-Z74AP6PL.mjs'),
|
|
123
|
+
env: () => import('./env-CMNNPAA4.mjs'),
|
|
124
|
+
domains: () => import('./domains-INY76L24.mjs'),
|
|
125
|
+
logs: () => import('./logs-VQCYRAHN.mjs'),
|
|
126
|
+
status: () => import('./status-BYHS4SG3.mjs'),
|
|
127
|
+
dev: () => import('./dev-OPKFS77L.mjs'),
|
|
128
|
+
repo: () => import('./repo-J5LZOBZZ.mjs'),
|
|
129
|
+
list: () => import('./list-MUARZ6RW.mjs'),
|
|
130
|
+
add: () => import('./add-FP4UGVGE.mjs')
|
|
131
131
|
};
|
|
132
132
|
var GLOBAL_FLAGS = /* @__PURE__ */ new Set(["--json", "--yes", "-y"]);
|
|
133
133
|
function extractGlobalFlags(argv) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { promptYesNo } from './chunk-L6474RPL.mjs';
|
|
3
|
-
import { ENV_SCOPE, DOMAIN_TYPE } from './chunk-
|
|
4
|
-
import { parseArgs, flagBool, flagString } from './chunk-
|
|
3
|
+
import { ENV_SCOPE, DOMAIN_TYPE } from './chunk-VE74N3YS.mjs';
|
|
4
|
+
import { parseArgs, flagBool, flagString } from './chunk-BXM4AWJQ.mjs';
|
|
5
5
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
6
6
|
import { readAuth, readProjectLink } from './chunk-JJYWETGA.mjs';
|
|
7
7
|
import { CliError, CLI_ERROR_CODE, info, dim, result, bold, success } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { formatEnvFile, parseEnvFile, parseKeyValueArg } from './chunk-4YSOZ6LY.mjs';
|
|
3
3
|
import { promptYesNo } from './chunk-L6474RPL.mjs';
|
|
4
|
-
import { ENV_SCOPE, PUBLIC_ENV_PREFIX, SECRET_MASK } from './chunk-
|
|
5
|
-
import { parseArgs, flagString, flagBool } from './chunk-
|
|
4
|
+
import { ENV_SCOPE, PUBLIC_ENV_PREFIX, SECRET_MASK } from './chunk-VE74N3YS.mjs';
|
|
5
|
+
import { parseArgs, flagString, flagBool } from './chunk-BXM4AWJQ.mjs';
|
|
6
6
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
7
7
|
import { readAuth, readProjectLink } from './chunk-JJYWETGA.mjs';
|
|
8
8
|
import { CliError, CLI_ERROR_CODE, info, dim, result, bold, success } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { parseArgs } from './chunk-
|
|
2
|
+
import { parseArgs } from './chunk-BXM4AWJQ.mjs';
|
|
3
3
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
4
4
|
import { readAuth, writeProjectLink } from './chunk-JJYWETGA.mjs';
|
|
5
5
|
import { CliError, CLI_ERROR_CODE, success, info, dim, result } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { REGISTRY_INDEX } from './chunk-
|
|
3
|
-
import { parseArgs, flagBool } from './chunk-
|
|
2
|
+
import { REGISTRY_INDEX } from './chunk-SN6E73KY.mjs';
|
|
3
|
+
import { parseArgs, flagBool } from './chunk-BXM4AWJQ.mjs';
|
|
4
4
|
import { CliError, CLI_ERROR_CODE, info, bold, dim, green, result } from './chunk-NZ4RG62Z.mjs';
|
|
5
5
|
|
|
6
6
|
// src/commands/list.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { parseArgs, flagString, flagBool } from './chunk-
|
|
2
|
+
import { parseArgs, flagString, flagBool } from './chunk-BXM4AWJQ.mjs';
|
|
3
3
|
import { resolveBaseUrl, ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
4
4
|
import { writeAuth } from './chunk-JJYWETGA.mjs';
|
|
5
5
|
import { CliError, CLI_ERROR_CODE, success, result, isJsonMode, step, info, dim } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { TERMINAL_DEPLOYMENT_STATUSES } from './chunk-
|
|
3
|
-
import { parseArgs, flagString, flagBool } from './chunk-
|
|
2
|
+
import { TERMINAL_DEPLOYMENT_STATUSES } from './chunk-VE74N3YS.mjs';
|
|
3
|
+
import { parseArgs, flagString, flagBool } from './chunk-BXM4AWJQ.mjs';
|
|
4
4
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
5
5
|
import { readAuth, readProjectLink, readProjectState } from './chunk-JJYWETGA.mjs';
|
|
6
6
|
import { CliError, CLI_ERROR_CODE, isJsonMode, failure, result, red } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { REPO_PROVIDER } from './chunk-
|
|
3
|
-
import { parseArgs, flagString, flagBool } from './chunk-
|
|
2
|
+
import { REPO_PROVIDER } from './chunk-VE74N3YS.mjs';
|
|
3
|
+
import { parseArgs, flagString, flagBool } from './chunk-BXM4AWJQ.mjs';
|
|
4
4
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
5
5
|
import { readAuth } from './chunk-JJYWETGA.mjs';
|
|
6
6
|
import { CliError, CLI_ERROR_CODE, info, dim, result, bold, success } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export { run as default, fetchCloneToken } from './chunk-
|
|
2
|
+
export { run as default, fetchCloneToken } from './chunk-27QJ5JQI.mjs';
|
|
3
3
|
import './chunk-L6474RPL.mjs';
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import './chunk-VE74N3YS.mjs';
|
|
5
|
+
import './chunk-BXM4AWJQ.mjs';
|
|
6
6
|
import './chunk-4ZVTPMUZ.mjs';
|
|
7
7
|
import './chunk-JJYWETGA.mjs';
|
|
8
8
|
import './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { pollDeployment } from './chunk-
|
|
3
|
-
import { DEPLOYMENT_STATUS, DEPLOY_TRIGGER } from './chunk-
|
|
4
|
-
import { parseArgs, flagBool } from './chunk-
|
|
2
|
+
import { pollDeployment } from './chunk-2BO4H6VP.mjs';
|
|
3
|
+
import { DEPLOYMENT_STATUS, DEPLOY_TRIGGER } from './chunk-VE74N3YS.mjs';
|
|
4
|
+
import { parseArgs, flagBool } from './chunk-BXM4AWJQ.mjs';
|
|
5
5
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
6
6
|
import { readAuth, readProjectLink, writeProjectState } from './chunk-JJYWETGA.mjs';
|
|
7
7
|
import { CliError, CLI_ERROR_CODE, step, success, info, dim, result, EXIT_CODE } from './chunk-NZ4RG62Z.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { DEPLOYMENT_STATUS } from './chunk-
|
|
3
|
-
import { parseArgs } from './chunk-
|
|
2
|
+
import { DEPLOYMENT_STATUS } from './chunk-VE74N3YS.mjs';
|
|
3
|
+
import { parseArgs } from './chunk-BXM4AWJQ.mjs';
|
|
4
4
|
import { ApiClient } from './chunk-4ZVTPMUZ.mjs';
|
|
5
5
|
import { readAuth, readProjectLink, readProjectState } from './chunk-JJYWETGA.mjs';
|
|
6
6
|
import { bold, dim, info, result } from './chunk-NZ4RG62Z.mjs';
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ description: Build, customize, rebrand, or deploy a Cimplify-scaffolded storefro
|
|
|
5
5
|
|
|
6
6
|
# Cimplify Storefront skill
|
|
7
7
|
|
|
8
|
-
You're working on a project scaffolded from `
|
|
8
|
+
You're working on a project scaffolded from `cimplify init`. The architecture is opinionated and the rebrand surface is intentionally small. Read `AGENTS.md` at the project root for the file ↔ brand-field map for *this template's* industry; this skill gives you the playbook that's the same across all six.
|
|
9
9
|
|
|
10
10
|
## The contract — never break
|
|
11
11
|
|
|
@@ -95,8 +95,8 @@ async function getX() {
|
|
|
95
95
|
Try `classNames`, `renderImage`, `renderLink`, slot props first. If those run out:
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
cimplify list
|
|
99
|
+
cimplify add product-card --dir src/components/cimplify
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
@@ -104,13 +104,13 @@ Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
|
104
104
|
### Deploy
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
107
|
+
cimplify login
|
|
108
|
+
cimplify projects create my-store
|
|
109
|
+
cimplify link <project-id>
|
|
110
|
+
cimplify env push
|
|
111
|
+
cimplify deploy --prod
|
|
112
|
+
cimplify logs --follow
|
|
113
|
+
cimplify domains add my-store.com
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
## Pitfalls — explicit ❌ list
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Cimplify storefront — architectural rules and rebrand contract for a project scaffolded from `
|
|
2
|
+
description: Cimplify storefront — architectural rules and rebrand contract for a project scaffolded from `cimplify init`. Triggers when files like lib/brand.ts, app/globals.css, components/header.tsx, or .cimplify/project.json are in the workspace.
|
|
3
3
|
globs: ["lib/brand.ts", "app/**", "components/**", ".env.local", "next.config.ts"]
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
---
|
|
@@ -103,9 +103,9 @@ app/
|
|
|
103
103
|
For anything beyond `lib/brand.ts` + `app/globals.css`, lean on the SDK's prebuilt components rather than reinvent. **Especially for product customization** (variants, add-ons, bundles, composites, services with scheduling) — the SDK already gets price math, axis matching, and cart payload contracts right. Default to ejecting and restyling:
|
|
104
104
|
|
|
105
105
|
```bash
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
cimplify add cart-drawer
|
|
107
|
+
cimplify add variant-selector
|
|
108
|
+
cimplify add product-page
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
Then edit the local copy. **Don't change the cart payload shape** unless you're also touching the SDK mock + backend lens. Full ejection rules and the customizer contract are in the SDK-level [`AGENTS.md`](../../AGENTS.md) → "Don't reinvent product customization".
|
|
@@ -5,8 +5,8 @@ A Cimplify storefront scaffolded from the **bakery** template — Next.js 16 (Ap
|
|
|
5
5
|
For a different industry, scaffold with `--template`:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
cimplify init my-store --template retail # electronics / consumer goods
|
|
9
|
+
cimplify init my-store --template bakery # default — food / pâtisserie
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
## Run
|
|
@@ -18,7 +18,7 @@ bun dev
|
|
|
18
18
|
|
|
19
19
|
Two things start in parallel:
|
|
20
20
|
|
|
21
|
-
- `
|
|
21
|
+
- `cimplify-mock` — the Cimplify mock API on `http://127.0.0.1:8787` (Akua's Bakery seeded by default).
|
|
22
22
|
- `next dev` — this storefront on `http://localhost:3000`.
|
|
23
23
|
|
|
24
24
|
Open the storefront in your browser. Edit `app/page.tsx` to start customising. The SDK ships full pages (`<CataloguePage>`, `<ProductPage>`, `<CartPage>`, `<CheckoutPage>`) and layouts (`<DefaultProductLayout>`, `<FoodProductLayout>`, etc.) that you can swap in.
|
|
@@ -50,10 +50,10 @@ lib/
|
|
|
50
50
|
## Switch seed
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
cimplify-mock --seed restaurant # Mama's Kitchen
|
|
54
|
+
cimplify-mock --seed retail # Currents Electronics
|
|
55
|
+
cimplify-mock --seed services # Serene Spa
|
|
56
|
+
cimplify-mock --seed grocery # FreshMart
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Update `NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID` in `.env.local` to match the seeded business.
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"private": true,
|
|
4
4
|
"version": "0.0.0",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"dev": "concurrently -k -n mock,next -c blue,magenta \"
|
|
6
|
+
"dev": "concurrently -k -n mock,next -c blue,magenta \"cimplify-mock --seed default --quiet\" \"next dev\"",
|
|
7
7
|
"dev:storefront": "next dev",
|
|
8
|
-
"dev:mock": "
|
|
8
|
+
"dev:mock": "cimplify-mock --seed default",
|
|
9
9
|
"build": "next build",
|
|
10
10
|
"start": "next start",
|
|
11
11
|
"typecheck": "tsc --noEmit",
|
|
@@ -5,7 +5,7 @@ description: Build, customize, rebrand, or deploy a Cimplify-scaffolded storefro
|
|
|
5
5
|
|
|
6
6
|
# Cimplify Storefront skill
|
|
7
7
|
|
|
8
|
-
You're working on a project scaffolded from `
|
|
8
|
+
You're working on a project scaffolded from `cimplify init`. The architecture is opinionated and the rebrand surface is intentionally small. Read `AGENTS.md` at the project root for the file ↔ brand-field map for *this template's* industry; this skill gives you the playbook that's the same across all six.
|
|
9
9
|
|
|
10
10
|
## The contract — never break
|
|
11
11
|
|
|
@@ -95,8 +95,8 @@ async function getX() {
|
|
|
95
95
|
Try `classNames`, `renderImage`, `renderLink`, slot props first. If those run out:
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
cimplify list
|
|
99
|
+
cimplify add product-card --dir src/components/cimplify
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
@@ -104,13 +104,13 @@ Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
|
104
104
|
### Deploy
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
107
|
+
cimplify login
|
|
108
|
+
cimplify projects create my-store
|
|
109
|
+
cimplify link <project-id>
|
|
110
|
+
cimplify env push
|
|
111
|
+
cimplify deploy --prod
|
|
112
|
+
cimplify logs --follow
|
|
113
|
+
cimplify domains add my-store.com
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
## Pitfalls — explicit ❌ list
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Cimplify storefront — architectural rules and rebrand contract for a project scaffolded from `
|
|
2
|
+
description: Cimplify storefront — architectural rules and rebrand contract for a project scaffolded from `cimplify init`. Triggers when files like lib/brand.ts, app/globals.css, components/header.tsx, or .cimplify/project.json are in the workspace.
|
|
3
3
|
globs: ["lib/brand.ts", "app/**", "components/**", ".env.local", "next.config.ts"]
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
---
|
|
@@ -101,9 +101,9 @@ Wired to `--seed fashion` (Studio FRX apparel catalogue — 14 products with siz
|
|
|
101
101
|
For anything beyond `lib/brand.ts` + `app/globals.css`, you'll likely want to lean on the SDK's prebuilt components rather than reinvent. Particularly for **product customization** (variants, add-ons, bundles, composites, services with scheduling), the SDK already gets the price math, variant axis matching, and cart payload contracts right. Default to ejecting and restyling:
|
|
102
102
|
|
|
103
103
|
```bash
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
cimplify add variant-selector # copies into ./components/
|
|
105
|
+
cimplify add cart-drawer
|
|
106
|
+
cimplify add product-page
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
Then edit the local copy. **Don't change the cart payload shape** unless you're also touching the SDK's mock and the backend lens.
|
|
@@ -11,7 +11,7 @@ bun dev
|
|
|
11
11
|
|
|
12
12
|
Two things start in parallel:
|
|
13
13
|
|
|
14
|
-
- `
|
|
14
|
+
- `cimplify-mock --seed retail` — the Cimplify mock API on `http://127.0.0.1:8787`, seeded with Currents Electronics.
|
|
15
15
|
- `next dev` — this storefront on `http://localhost:3000`.
|
|
16
16
|
|
|
17
17
|
Open the storefront in your browser. Edit `app/page.tsx` to start customising.
|
|
@@ -46,9 +46,9 @@ lib/
|
|
|
46
46
|
This template is wired to the `retail` seed. To preview a different industry without re-scaffolding:
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
cimplify-mock --seed restaurant # Mama's Kitchen
|
|
50
|
+
cimplify-mock --seed services # Serene Spa
|
|
51
|
+
cimplify-mock --seed grocery # FreshMart
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
Update `NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID` in `.env.local` to match the seeded business.
|
|
@@ -56,10 +56,10 @@ Update `NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID` in `.env.local` to match the seeded bu
|
|
|
56
56
|
For a fresh scaffold with another design altogether:
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
cimplify init my-store --template bakery # warm food/pastry
|
|
60
|
+
cimplify init my-store --template restaurant # coming soon
|
|
61
|
+
cimplify init my-store --template services # coming soon
|
|
62
|
+
cimplify init my-store --template grocery # coming soon
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
## Go live
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"private": true,
|
|
4
4
|
"version": "0.0.0",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"dev": "concurrently -k -n mock,next -c blue,magenta \"
|
|
6
|
+
"dev": "concurrently -k -n mock,next -c blue,magenta \"cimplify-mock --seed fashion --quiet\" \"next dev\"",
|
|
7
7
|
"dev:storefront": "next dev",
|
|
8
|
-
"dev:mock": "
|
|
8
|
+
"dev:mock": "cimplify-mock --seed fashion",
|
|
9
9
|
"build": "next build",
|
|
10
10
|
"start": "next start",
|
|
11
11
|
"typecheck": "tsc --noEmit",
|
|
@@ -5,7 +5,7 @@ description: Build, customize, rebrand, or deploy a Cimplify-scaffolded storefro
|
|
|
5
5
|
|
|
6
6
|
# Cimplify Storefront skill
|
|
7
7
|
|
|
8
|
-
You're working on a project scaffolded from `
|
|
8
|
+
You're working on a project scaffolded from `cimplify init`. The architecture is opinionated and the rebrand surface is intentionally small. Read `AGENTS.md` at the project root for the file ↔ brand-field map for *this template's* industry; this skill gives you the playbook that's the same across all six.
|
|
9
9
|
|
|
10
10
|
## The contract — never break
|
|
11
11
|
|
|
@@ -95,8 +95,8 @@ async function getX() {
|
|
|
95
95
|
Try `classNames`, `renderImage`, `renderLink`, slot props first. If those run out:
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
cimplify list
|
|
99
|
+
cimplify add product-card --dir src/components/cimplify
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
@@ -104,13 +104,13 @@ Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
|
104
104
|
### Deploy
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
107
|
+
cimplify login
|
|
108
|
+
cimplify projects create my-store
|
|
109
|
+
cimplify link <project-id>
|
|
110
|
+
cimplify env push
|
|
111
|
+
cimplify deploy --prod
|
|
112
|
+
cimplify logs --follow
|
|
113
|
+
cimplify domains add my-store.com
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
## Pitfalls — explicit ❌ list
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Cimplify storefront — architectural rules and rebrand contract for a project scaffolded from `
|
|
2
|
+
description: Cimplify storefront — architectural rules and rebrand contract for a project scaffolded from `cimplify init`. Triggers when files like lib/brand.ts, app/globals.css, components/header.tsx, or .cimplify/project.json are in the workspace.
|
|
3
3
|
globs: ["lib/brand.ts", "app/**", "components/**", ".env.local", "next.config.ts"]
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
---
|
|
@@ -79,9 +79,9 @@ app/
|
|
|
79
79
|
For anything beyond `lib/brand.ts` + `app/globals.css`, lean on the SDK's prebuilt components rather than reinvent. **Especially for product customization** (variants, add-ons, bundles, composites) — the SDK already gets price math, axis matching, and cart payload contracts right. Default to ejecting and restyling:
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
cimplify add cart-drawer
|
|
83
|
+
cimplify add add-on-selector
|
|
84
|
+
cimplify add product-page
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
Then edit the local copy. **Don't change the cart payload shape** unless you're also touching the SDK mock + backend lens. Full ejection rules and the customizer contract are in the SDK-level [`AGENTS.md`](../../AGENTS.md) → "Don't reinvent product customization".
|
|
@@ -5,8 +5,8 @@ A Cimplify storefront scaffolded from the **bakery** template — Next.js 16 (Ap
|
|
|
5
5
|
For a different industry, scaffold with `--template`:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
cimplify init my-store --template retail # electronics / consumer goods
|
|
9
|
+
cimplify init my-store --template bakery # default — food / pâtisserie
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
## Run
|
|
@@ -18,7 +18,7 @@ bun dev
|
|
|
18
18
|
|
|
19
19
|
Two things start in parallel:
|
|
20
20
|
|
|
21
|
-
- `
|
|
21
|
+
- `cimplify-mock` — the Cimplify mock API on `http://127.0.0.1:8787` (Akua's Bakery seeded by default).
|
|
22
22
|
- `next dev` — this storefront on `http://localhost:3000`.
|
|
23
23
|
|
|
24
24
|
Open the storefront in your browser. Edit `app/page.tsx` to start customising. The SDK ships full pages (`<CataloguePage>`, `<ProductPage>`, `<CartPage>`, `<CheckoutPage>`) and layouts (`<DefaultProductLayout>`, `<FoodProductLayout>`, etc.) that you can swap in.
|
|
@@ -50,10 +50,10 @@ lib/
|
|
|
50
50
|
## Switch seed
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
cimplify-mock --seed restaurant # Mama's Kitchen
|
|
54
|
+
cimplify-mock --seed retail # Currents Electronics
|
|
55
|
+
cimplify-mock --seed services # Serene Spa
|
|
56
|
+
cimplify-mock --seed grocery # FreshMart
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Update `NEXT_PUBLIC_CIMPLIFY_BUSINESS_ID` in `.env.local` to match the seeded business.
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"private": true,
|
|
4
4
|
"version": "0.0.0",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"dev": "concurrently -k -n mock,next -c blue,magenta \"
|
|
6
|
+
"dev": "concurrently -k -n mock,next -c blue,magenta \"cimplify-mock --seed grocery --quiet\" \"next dev\"",
|
|
7
7
|
"dev:storefront": "next dev",
|
|
8
|
-
"dev:mock": "
|
|
8
|
+
"dev:mock": "cimplify-mock --seed grocery",
|
|
9
9
|
"build": "next build",
|
|
10
10
|
"start": "next start",
|
|
11
11
|
"typecheck": "tsc --noEmit",
|
|
@@ -5,7 +5,7 @@ description: Build, customize, rebrand, or deploy a Cimplify-scaffolded storefro
|
|
|
5
5
|
|
|
6
6
|
# Cimplify Storefront skill
|
|
7
7
|
|
|
8
|
-
You're working on a project scaffolded from `
|
|
8
|
+
You're working on a project scaffolded from `cimplify init`. The architecture is opinionated and the rebrand surface is intentionally small. Read `AGENTS.md` at the project root for the file ↔ brand-field map for *this template's* industry; this skill gives you the playbook that's the same across all six.
|
|
9
9
|
|
|
10
10
|
## The contract — never break
|
|
11
11
|
|
|
@@ -95,8 +95,8 @@ async function getX() {
|
|
|
95
95
|
Try `classNames`, `renderImage`, `renderLink`, slot props first. If those run out:
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
cimplify list
|
|
99
|
+
cimplify add product-card --dir src/components/cimplify
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
@@ -104,13 +104,13 @@ Once ejected, the file is yours. Hooks/types still come from `@cimplify/sdk`.
|
|
|
104
104
|
### Deploy
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
107
|
+
cimplify login
|
|
108
|
+
cimplify projects create my-store
|
|
109
|
+
cimplify link <project-id>
|
|
110
|
+
cimplify env push
|
|
111
|
+
cimplify deploy --prod
|
|
112
|
+
cimplify logs --follow
|
|
113
|
+
cimplify domains add my-store.com
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
## Pitfalls — explicit ❌ list
|