cabloy 5.1.161 → 5.1.162
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/.cabloy-version +1 -1
- package/CHANGELOG.md +13 -0
- package/CLAUDE.md +1 -1
- package/CONTRIBUTING.md +1 -1
- package/README.md +34 -58
- package/package.json +1 -1
- package/repo-docs/.vitepress/config.mjs +58 -32
- package/repo-docs/ai/ai-spec-driven-development.md +99 -0
- package/repo-docs/ai/docs-skills-rules-mapping.md +25 -8
- package/repo-docs/ai/edition-consistency-checklist.md +2 -3
- package/repo-docs/ai/introduction.md +7 -4
- package/repo-docs/ai/playbook-spec-execution.md +19 -5
- package/repo-docs/ai/playbook-spec-generation.md +69 -101
- package/repo-docs/ai/repo-guidance.md +1 -1
- package/repo-docs/ai/skills.md +31 -10
- package/repo-docs/backend/dto-guide.md +1 -0
- package/repo-docs/backend/openapi-guide.md +1 -1
- package/repo-docs/editions/overview.md +51 -120
- package/repo-docs/frontend/environment-config-guide.md +1 -1
- package/repo-docs/frontend/form-layout-guide.md +4 -2
- package/repo-docs/frontend/introduction.md +2 -1
- package/repo-docs/frontend/quickstart.md +2 -8
- package/repo-docs/frontend/scripts.md +7 -3
- package/repo-docs/frontend/ssr-architecture-overview.md +1 -1
- package/repo-docs/frontend/ssr-build-deploy-guide.md +4 -2
- package/repo-docs/fullstack/comparison-with-other-frameworks.md +6 -2
- package/repo-docs/fullstack/contract-loop-playbook.md +4 -0
- package/repo-docs/fullstack/introduction.md +13 -4
- package/repo-docs/fullstack/parallel-worktree-environment.md +2 -0
- package/repo-docs/fullstack/quickstart.md +65 -74
- package/repo-docs/fullstack/semantic-presentation-contract.md +121 -0
- package/repo-docs/fullstack/ssr-site-and-flavor-setup.md +2 -2
- package/repo-docs/index.md +16 -11
- package/repo-docs/reference/glossary.md +30 -0
- package/repo-docs/reference/package-map.md +1 -1
- package/repo-docs/reference/repo-scripts.md +6 -4
- package/vona/pnpm-lock.yaml +10 -96
- package/zova/pnpm-lock.yaml +8 -0
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/component/siteEntryTables.ts +12 -0
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/index.ts +13 -0
- package/zova/src/suite/a-home/modules/home-base/src/component/siteEntryTables/controller.tsx +71 -0
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +8 -0
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +8 -0
- package/zova/src/suite/a-home/modules/home-indexadmin/package.json +3 -0
- package/zova/src/suite/a-home/modules/home-indexadmin/src/page/dashboard/controller.tsx +6 -13
- package/zova/src/suite/a-home/modules/home-indexweb/package.json +3 -1
- package/zova/src/suite/a-home/modules/home-indexweb/src/page/home/controller.tsx +6 -14
- package/repo-docs/ai/edition-detection.md +0 -30
- package/repo-docs/editions/cabloy-basic.md +0 -26
- package/repo-docs/editions/cabloy-start.md +0 -53
- package/repo-docs/editions/choosing-between-basic-and-start.md +0 -83
- package/repo-docs/editions/detection.md +0 -31
|
@@ -33,11 +33,7 @@ That matters because edition choice affects:
|
|
|
33
33
|
- project assets and examples
|
|
34
34
|
- which examples in the docs match the current repo directly
|
|
35
35
|
|
|
36
|
-
Read together with
|
|
37
|
-
|
|
38
|
-
- [Edition Detection](/editions/detection)
|
|
39
|
-
- [Cabloy Basic](/editions/cabloy-basic)
|
|
40
|
-
- [Cabloy Start](/editions/cabloy-start)
|
|
36
|
+
Read together with [Cabloy Editions](/editions/overview#working-in-an-existing-checkout).
|
|
41
37
|
|
|
42
38
|
## Step 2: start from root scripts
|
|
43
39
|
|
|
@@ -203,9 +199,7 @@ Read next:
|
|
|
203
199
|
|
|
204
200
|
### I need edition-sensitive guidance
|
|
205
201
|
|
|
206
|
-
- [
|
|
207
|
-
- [Cabloy Basic](/editions/cabloy-basic)
|
|
208
|
-
- [Cabloy Start](/editions/cabloy-start)
|
|
202
|
+
- [Cabloy Editions](/editions/overview#working-in-an-existing-checkout)
|
|
209
203
|
- [Frontend Scripts](/frontend/scripts)
|
|
210
204
|
|
|
211
205
|
### I want the broader frontend architecture story
|
|
@@ -16,7 +16,7 @@ A practical rule is:
|
|
|
16
16
|
2. then choose the correct script, flavor, and appMode path
|
|
17
17
|
3. only then document or automate edition-specific frontend examples
|
|
18
18
|
|
|
19
|
-
For the edition-detection workflow,
|
|
19
|
+
For the edition-detection workflow, see [Cabloy Editions: For AI Development](/editions/overview#for-ai-development).
|
|
20
20
|
|
|
21
21
|
## Cabloy Basic root wrappers
|
|
22
22
|
|
|
@@ -45,9 +45,13 @@ npm run build:zova:commerce:admin
|
|
|
45
45
|
|
|
46
46
|
`npm run build:zova:all` sequentially runs the focused Basic and Commerce batch builds. `npm run init` uses it to prepare every shipped Cabloy Basic SSR/REST flavor before Vona is initialized. For normal frontend work, continue to use `build:zova` or `build:zova:commerce` when only that suite's artifacts changed.
|
|
47
47
|
|
|
48
|
-
##
|
|
48
|
+
## Zova standalone SSR development
|
|
49
49
|
|
|
50
|
-
The
|
|
50
|
+
The `dev:zova:*` commands start the Zova development server, which uses `9000` in the Cabloy Basic default environment. Use this Zova standalone SSR entry for page, route, and hydration iteration. It may be used as Vona's development proxy target, but direct access to `9000` does not prove the Vona request boundary or integrated acceptance.
|
|
51
|
+
|
|
52
|
+
## Vona integrated SSR browser acceptance
|
|
53
|
+
|
|
54
|
+
The default Basic Web and Admin sites have browser smoke commands that exercise Vona integrated SSR through Vona SSR dispatch at port `7102`, not through the Zova standalone SSR development-server port.
|
|
51
55
|
|
|
52
56
|
Prepare current SSR and REST artifacts explicitly when frontend output has changed:
|
|
53
57
|
|
|
@@ -200,7 +200,7 @@ Use this order when you need the shortest path from mental model to implementati
|
|
|
200
200
|
3. [SSR Init Data](/frontend/ssr-init-data)
|
|
201
201
|
4. [SSR ClientOnly](/frontend/ssr-client-only)
|
|
202
202
|
5. [SSR SEO Meta](/frontend/ssr-seo-meta)
|
|
203
|
-
6. [SSR
|
|
203
|
+
6. [SSR Environment Variables](/frontend/ssr-env)
|
|
204
204
|
7. [Fullstack Vona + Zova Integration](/fullstack/vona-zova-integration)
|
|
205
205
|
|
|
206
206
|
## Implementation checks for architecture-sensitive SSR changes
|
|
@@ -77,7 +77,7 @@ npm run build
|
|
|
77
77
|
|
|
78
78
|
Practical interpretation:
|
|
79
79
|
|
|
80
|
-
- `dev:zova:*`
|
|
80
|
+
- `dev:zova:*` starts the Zova standalone SSR development entry (the default `9000` listener)
|
|
81
81
|
- `build:zova` builds frontend SSR output in batch mode
|
|
82
82
|
- `build:zova:admin` and `build:zova:web` are explicit root-wrapper paths for flavor-specific SSR output plus related REST generation
|
|
83
83
|
- `build` is the fullstack alignment path when frontend and backend output should move together
|
|
@@ -117,13 +117,15 @@ or:
|
|
|
117
117
|
npm run dev:zova:web
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
Use this when the task is:
|
|
120
|
+
Use this Zova standalone SSR entry when the task is:
|
|
121
121
|
|
|
122
122
|
- page development
|
|
123
123
|
- route debugging
|
|
124
124
|
- SSR UI iteration
|
|
125
125
|
- hydration behavior review
|
|
126
126
|
|
|
127
|
+
When the task requires the Vona HTTP boundary, built artifact handoff, or acceptance evidence, verify through Vona integrated SSR on the effective Vona server port (the Cabloy Basic default is `7102`), rather than directly through the Zova development server.
|
|
128
|
+
|
|
127
129
|
If you need deeper script control or need to verify the exact Zova flavor path, inspect the flavor-specific scripts described in [Frontend Scripts](/frontend/scripts).
|
|
128
130
|
|
|
129
131
|
## Build workflow
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Comparison with Other Frameworks
|
|
2
2
|
|
|
3
|
-
This page shows how **Cabloy** differs from several common framework choices, focusing on its one fullstack system for AI vibe coding: bidirectional type sync, CLI-first workflows,
|
|
3
|
+
This page shows how **Cabloy** differs from several common framework choices, focusing on its one fullstack system for AI vibe coding: bidirectional type sync, CLI-first workflows, source-grounded docs and skills, and AI Spec-Driven Development. It also distinguishes strengths of the fullstack system from those of the backend layer provided by **Vona**.
|
|
4
4
|
|
|
5
5
|
## What is being compared
|
|
6
6
|
|
|
@@ -15,6 +15,7 @@ For the broader Cabloy model, start with these pages:
|
|
|
15
15
|
- [Vona + Zova Integration](/fullstack/vona-zova-integration)
|
|
16
16
|
- [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
|
|
17
17
|
- [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
|
|
18
|
+
- [AI Spec-Driven Development](/ai/ai-spec-driven-development)
|
|
18
19
|
|
|
19
20
|
## Comparison lens
|
|
20
21
|
|
|
@@ -25,6 +26,7 @@ The sections below use the same comparison lens each time:
|
|
|
25
26
|
- **Frontend and admin model** — how the UI side is expected to evolve
|
|
26
27
|
- **Cross-stack workflow** — how bidirectional type sync, contracts, and generation workflows stay aligned
|
|
27
28
|
- **Guidance and automation** — how CLI-first workflows, docs, and skills make repository conventions reusable
|
|
29
|
+
- **Traceable delivery** — how a repository can connect requirements, contracts, bounded work, acceptance procedures, and evidence
|
|
28
30
|
- **Best fit** — the kind of team or project the framework fits most naturally
|
|
29
31
|
|
|
30
32
|
## Cabloy vs Next.js
|
|
@@ -35,7 +37,7 @@ The sections below use the same comparison lens each time:
|
|
|
35
37
|
| Backend model | Dedicated backend framework with its own runtime, contracts, infrastructure, and CLI workflows | Backend capabilities are typically centered around the web app runtime |
|
|
36
38
|
| Frontend and admin model | Shared conventions across SSR, SPA, Web, and Admin applications | Strong fit for React-based web application delivery |
|
|
37
39
|
| Cross-stack workflow | Bidirectional type sync through OpenAPI, SDK generation, and metadata feedback loops | Usually chosen per project or ecosystem tooling |
|
|
38
|
-
| Guidance and automation | CLI-first workflows
|
|
40
|
+
| Guidance and automation | CLI-first workflows, source-grounded docs and skills, and Traceable Spec Delivery | Usually chosen per project or ecosystem tooling |
|
|
39
41
|
| Best fit | Teams that want a coordinated fullstack system with a stronger dedicated backend layer | Teams that want a React-centered fullstack web application path |
|
|
40
42
|
|
|
41
43
|
Cabloy and Next.js both target fullstack application development, but they organize the stack differently.
|
|
@@ -48,6 +50,7 @@ Representative Cabloy strengths in this comparison include:
|
|
|
48
50
|
- bidirectional type sync through backend OpenAPI output, frontend SDK generation, and frontend metadata feedback loops
|
|
49
51
|
- CLI-first workflows for scaffolding, generation, refactors, and verification
|
|
50
52
|
- source-grounded docs and skills that make repository conventions reusable for people and AI agents
|
|
53
|
+
- AI Spec-Driven Development: a repository-native Traceable Spec Delivery model that connects requirements, contracts, bounded work, acceptance procedures, and observed evidence
|
|
51
54
|
- shared delivery conventions for SSR, SPA, Web, and Admin applications
|
|
52
55
|
|
|
53
56
|
If your main goal is a React-centered fullstack web app, Next.js may feel more direct. If your main goal is a **coordinated fullstack framework system** with a stronger backend layer and explicit cross-stack workflows, Cabloy is the better fit.
|
|
@@ -117,6 +120,7 @@ These comparisons are most useful when your decision depends on questions like:
|
|
|
117
120
|
- do you want one coordinated framework system instead of stitching backend and frontend frameworks together?
|
|
118
121
|
- do you need bidirectional type sync through an explicit contract loop?
|
|
119
122
|
- do you want CLI-first workflows, source-grounded docs, and skills that make repository conventions reusable?
|
|
123
|
+
- do you want a disciplined, evidence-aware specification-delivery model in the repository?
|
|
120
124
|
- do you need a stronger dedicated backend layer inside a fullstack architecture?
|
|
121
125
|
- do you need shared conventions across SSR, SPA, Web, and Admin delivery modes?
|
|
122
126
|
- do you want Django-Admin-like rapid admin development inside the Node.js ecosystem, but with a more modern frontend and interaction model?
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
This page is the canonical playbook for Cabloy’s bidirectional fullstack contract loop.
|
|
4
4
|
|
|
5
|
+
[AI Spec-Driven Development](/ai/ai-spec-driven-development) defines what an approved increment should build and how it is proven. Contract Loop is its complementary synchronization mechanism: it aligns Vona↔Zova contract sources, generated handoffs, and consumers, but does not create suite authority or establish ATP evidence.
|
|
6
|
+
|
|
5
7
|
Use it when you need to decide:
|
|
6
8
|
|
|
7
9
|
- where source truth lives for a change
|
|
@@ -361,6 +363,8 @@ Use the tutorial series as examples of the two chains:
|
|
|
361
363
|
## Related docs
|
|
362
364
|
|
|
363
365
|
- [Fullstack Introduction](/fullstack/introduction)
|
|
366
|
+
- [AI Spec-Driven Development](/ai/ai-spec-driven-development)
|
|
367
|
+
- [Semantic Presentation Contract](/fullstack/semantic-presentation-contract)
|
|
364
368
|
- [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
|
|
365
369
|
- [Existing Resource Field Update](/backend/resource-field-update)
|
|
366
370
|
- [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Fullstack Introduction
|
|
2
2
|
|
|
3
|
-
Cabloy is a Node.js fullstack framework for AI vibe coding.
|
|
3
|
+
Cabloy is a Node.js fullstack framework for AI vibe coding, with AI Spec-Driven Development for traceable, evidence-backed delivery.
|
|
4
4
|
|
|
5
|
-
**One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows, docs, and
|
|
5
|
+
**One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows, docs, skills, and traceable delivery from product intent to verifiable evidence.**
|
|
6
6
|
|
|
7
7
|
Instead of stitching separate backend and frontend stacks together, Cabloy keeps their contracts, tooling, and guidance connected in one repository. Vona, Zova, and suite-based modules are the aligned architecture behind that workflow.
|
|
8
8
|
|
|
@@ -12,6 +12,7 @@ Instead of stitching separate backend and frontend stacks together, Cabloy keeps
|
|
|
12
12
|
- **Bidirectional type sync** — use the contract loop to keep backend contracts and frontend metadata aligned in both directions
|
|
13
13
|
- **CLI-first workflows** — use explicit commands for scaffolding, generation, refactors, and verification
|
|
14
14
|
- **Docs and skills** — give people and AI agents reusable, source-grounded guidance for the current repository
|
|
15
|
+
- **AI Spec-Driven Development** — use Traceable Spec Delivery to connect product intent, contracts, bounded work, acceptance procedures, and verifiable evidence
|
|
15
16
|
- **Vona + Zova** — use aligned backend and frontend layers for code sharing and cross-stack consistency
|
|
16
17
|
- **Modular delivery** — organize capabilities as suites and modules, then deliver SSR, SPA, Web, and Admin applications with shared conventions
|
|
17
18
|
|
|
@@ -45,6 +46,7 @@ Use this path when the task is about how backend and frontend stay aligned insid
|
|
|
45
46
|
- [Framework Performance](/fullstack/framework-performance)
|
|
46
47
|
- [Vona + Zova Integration](/fullstack/vona-zova-integration)
|
|
47
48
|
- [Contract Loop Playbook](/fullstack/contract-loop-playbook)
|
|
49
|
+
- [Semantic Presentation Contract](/fullstack/semantic-presentation-contract)
|
|
48
50
|
- [Admin Resource and Web Self-Service](/fullstack/admin-resource-and-web-self-service)
|
|
49
51
|
- [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
|
|
50
52
|
- [Fullstack Image Workflow](/fullstack/image-workflow)
|
|
@@ -56,8 +58,7 @@ Use this path when the task is about how backend and frontend stay aligned insid
|
|
|
56
58
|
Use this path when the task depends on edition boundaries, UI assumptions, or cross-repo delivery differences:
|
|
57
59
|
|
|
58
60
|
- [Edition Collaboration Differences](/fullstack/edition-collaboration-differences)
|
|
59
|
-
- [Editions
|
|
60
|
-
- [Choosing Basic vs Start](/editions/choosing-between-basic-and-start)
|
|
61
|
+
- [Cabloy Editions](/editions/overview#choosing-an-edition)
|
|
61
62
|
|
|
62
63
|
## Shared architecture
|
|
63
64
|
|
|
@@ -71,6 +72,14 @@ Cabloy Basic and Cabloy Start are related, complete edition baselines built on t
|
|
|
71
72
|
|
|
72
73
|
This combination keeps backend and frontend development close enough for code sharing, workflow reuse, and AI vibe coding workflows.
|
|
73
74
|
|
|
75
|
+
## Traceable delivery and contract synchronization
|
|
76
|
+
|
|
77
|
+
[AI Spec-Driven Development](/ai/ai-spec-driven-development) governs how confirmed product intent becomes contracts, bounded WBS work, acceptance procedures, and evidence-backed status. Its precise engineering method is Traceable Spec Delivery.
|
|
78
|
+
|
|
79
|
+
The [Contract Loop](/fullstack/contract-loop-playbook) is complementary rather than interchangeable: it synchronizes Vona↔Zova contract sources, generated handoffs, and consumers when an approved increment crosses the fullstack contract boundary. A completed synchronization does not establish product authority or close ATP evidence.
|
|
80
|
+
|
|
81
|
+
When an approved scene needs schema-driven presentation, use the [Semantic Presentation Contract](/fullstack/semantic-presentation-contract) to translate audience, task, scene, and DTO boundaries into renderer decisions without changing security or ownership authority.
|
|
82
|
+
|
|
74
83
|
## Cabloy fullstack framework principles
|
|
75
84
|
|
|
76
85
|
Cabloy’s fullstack model can be understood through two core principles.
|
|
@@ -30,6 +30,8 @@ The recommendation uses only Git worktree metadata and the fixed defaults below.
|
|
|
30
30
|
| `DEV_SERVER_PORT` | `9000` | `9000 + linked-worktree ordinal` |
|
|
31
31
|
| `DEV_SERVER_HMR_PORT` | `24679` | `24679 + linked-worktree ordinal` |
|
|
32
32
|
|
|
33
|
+
These listeners have different responsibilities: `SERVER_LISTEN_PORT` is the Vona server and Vona integrated SSR entry, `DEV_SERVER_PORT` is the Zova standalone SSR development server, and `DEV_SERVER_HMR_PORT` is its HMR listener. `API_BASE_URL` must point to the Vona port, not the Zova development port.
|
|
34
|
+
|
|
33
35
|
`APP_NAME` is the current linked worktree directory name. `API_BASE_URL` is regenerated as `http://localhost:<SERVER_LISTEN_PORT>`.
|
|
34
36
|
|
|
35
37
|
Every valid explicit setup proposes the same complete tuple and both local files:
|
|
@@ -26,6 +26,16 @@ npm create cabloy
|
|
|
26
26
|
|
|
27
27
|
The generated project already includes `CLAUDE.md` and the `.claude/` workspace assets. This path creates a Cabloy Basic project baseline. Open this project in Claude Code and start coding immediately with project-specific guidance.
|
|
28
28
|
|
|
29
|
+
`npm create cabloy` automatically runs `npm run init` after creating the project. If you later need to reinstall the project's frontend and backend dependencies, you can run `npm run init` directly.
|
|
30
|
+
|
|
31
|
+
### Cabloy Start
|
|
32
|
+
|
|
33
|
+
Cabloy Start is the public MIT-licensed edition maintained in its own repository. Instead of `npm create cabloy`, clone its public repository directly and run `npm run init`. Then use the frontend commands provided by that edition. Do not assume the Cabloy Basic flavor names apply to Cabloy Start.
|
|
34
|
+
|
|
35
|
+
For the Start onboarding distinction, read [Cabloy Editions: Cabloy Start](/editions/overview#cabloy-start).
|
|
36
|
+
|
|
37
|
+
If you are not sure which edition you are using or which one to choose, read [Cabloy Editions](/editions/overview).
|
|
38
|
+
|
|
29
39
|
### pnpm 11 supply-chain protection note
|
|
30
40
|
|
|
31
41
|
`pnpm` 11 enables the `minimumReleaseAge` supply-chain protection by default. Newly published packages may be blocked for a short time window before `pnpm` allows installation.
|
|
@@ -51,40 +61,55 @@ set pnpm_config_minimum_release_age=0 && npm create cabloy
|
|
|
51
61
|
pnpm_config_minimum_release_age=0 npm create cabloy
|
|
52
62
|
```
|
|
53
63
|
|
|
54
|
-
|
|
64
|
+
## 3. Start Vona integrated SSR
|
|
55
65
|
|
|
56
|
-
|
|
66
|
+
Run the root CLI command to start the Vona server:
|
|
57
67
|
|
|
58
68
|
```bash
|
|
59
69
|
npm run dev
|
|
60
70
|
```
|
|
61
71
|
|
|
62
|
-
|
|
63
|
-
|
|
72
|
+
In the Cabloy Basic default environment, Vona listens on `7102` and serves the following SSR sites:
|
|
73
|
+
|
|
74
|
+
| SSR Site | URL |
|
|
75
|
+
| -------------- | ------------------------------------- |
|
|
76
|
+
| Web | http://localhost:7102/ |
|
|
77
|
+
| Admin | http://localhost:7102/admin/ |
|
|
78
|
+
| Commerce-Web | http://localhost:7102/commerce/ |
|
|
79
|
+
| Commerce-Admin | http://localhost:7102/commerce-admin/ |
|
|
64
80
|
|
|
65
|
-
## 4. Start
|
|
81
|
+
## 4. Start Zova standalone SSR
|
|
66
82
|
|
|
67
|
-
|
|
83
|
+
Run one of the root CLI commands below to start the Zova development server. Zova standalone SSR is typically used for frontend development, hot reload, and isolated debugging:
|
|
68
84
|
|
|
69
85
|
```bash
|
|
70
|
-
npm run dev:zova:
|
|
71
|
-
npm run dev:zova:
|
|
86
|
+
npm run dev:zova:web # http://localhost:9000/
|
|
87
|
+
npm run dev:zova:admin # http://localhost:9000/admin/
|
|
88
|
+
npm run dev:zova:commerce:web # http://localhost:9000/commerce/
|
|
89
|
+
npm run dev:zova:commerce:admin # http://localhost:9000/commerce-admin/
|
|
72
90
|
```
|
|
73
91
|
|
|
74
|
-
|
|
92
|
+
In the Cabloy Basic default environment, the Zova development server listens on `9000`:
|
|
75
93
|
|
|
76
|
-
|
|
94
|
+
| SSR Site | URL |
|
|
95
|
+
| -------------- | ------------------------------------- |
|
|
96
|
+
| Web | http://localhost:9000/ |
|
|
97
|
+
| Admin | http://localhost:9000/admin/ |
|
|
98
|
+
| Commerce-Web | http://localhost:9000/commerce/ |
|
|
99
|
+
| Commerce-Admin | http://localhost:9000/commerce-admin/ |
|
|
77
100
|
|
|
78
|
-
|
|
101
|
+
## 5. Vona integrated SSR and Zova standalone SSR
|
|
79
102
|
|
|
80
|
-
|
|
103
|
+
The two commands start different SSR entry points. Choose the one that matches the task:
|
|
81
104
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
105
|
+
| SSR entry | Default port | Best for | What it validates |
|
|
106
|
+
| ----------------------- | ------------ | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
107
|
+
| **Vona integrated SSR** | `7102` | Fullstack development, site access, and browser acceptance | Vona API handling, SSR site matching, built artifact handoff, and the integrated HTTP response path |
|
|
108
|
+
| **Zova standalone SSR** | `9000` | Frontend development, hot reload, isolated debugging, and page/route/hydration iteration | Zova SSR rendering and frontend behavior without proving the Vona integration boundary |
|
|
86
109
|
|
|
87
|
-
|
|
110
|
+
The Zova standalone SSR server can also be used as Vona's development proxy target. However, directly opening `9000` does not replace validation through Vona integrated SSR at `7102`. For acceptance or deployment-oriented checks, build the required SSR/REST artifacts, synchronize them with Vona, and access the site through Vona.
|
|
111
|
+
|
|
112
|
+
## 6. Run with Docker Compose
|
|
88
113
|
|
|
89
114
|
Both Cabloy Basic and Cabloy Start support the same Docker Compose command flow. Run these commands from the repository for the edition you are using:
|
|
90
115
|
|
|
@@ -95,81 +120,47 @@ sudo COMPOSE_BAKE=true docker-compose build
|
|
|
95
120
|
sudo docker-compose up
|
|
96
121
|
```
|
|
97
122
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
123
|
+
| SSR Site | Url |
|
|
124
|
+
| -------------- | -------------------------------- |
|
|
125
|
+
| Web | http://localhost/ |
|
|
126
|
+
| Admin | http://localhost/admin/ |
|
|
127
|
+
| Commerce-Web | http://localhost/commerce/ |
|
|
128
|
+
| Commerce-Admin | http://localhost/commerce-admin/ |
|
|
104
129
|
|
|
105
|
-
|
|
130
|
+
## 7. Upgrade an existing project
|
|
106
131
|
|
|
107
132
|
```bash
|
|
108
|
-
npm run upgrade:dry-run
|
|
109
133
|
npm run upgrade
|
|
110
134
|
```
|
|
111
135
|
|
|
112
|
-
|
|
136
|
+
## 8. Next step: follow the quick start tutorials
|
|
113
137
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
repo-e2e/specs/cabloy-basic.spec.ts
|
|
118
|
-
repo-e2e/specs/home-user-account.spec.ts
|
|
119
|
-
repo-e2e/specs/a-commerce.spec.ts
|
|
120
|
-
```
|
|
138
|
+
If you want a beginner-friendly path that connects modules, CRUD, bidirectional contract sharing, and schema-driven workflows into one story, continue with:
|
|
139
|
+
|
|
140
|
+
- [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
|
|
121
141
|
|
|
122
|
-
|
|
142
|
+
## 9. AI Spec-Driven Development
|
|
123
143
|
|
|
124
|
-
|
|
144
|
+
After the project is running, use **AI Spec-Driven Development** when AI-assisted work must move from confirmed product intent to traceable, evidence-backed delivery.
|
|
125
145
|
|
|
126
|
-
Cabloy
|
|
146
|
+
Cabloy implements this approach through **Traceable Spec Delivery**:
|
|
127
147
|
|
|
128
148
|
```text
|
|
129
|
-
|
|
130
|
-
repo-e2e/scripts/
|
|
131
|
-
repo-e2e/specs/
|
|
149
|
+
PRD → SRS → WBS → ATP → Evidence
|
|
132
150
|
```
|
|
133
151
|
|
|
134
|
-
|
|
152
|
+
For suite-level work, describe the business capability you want to plan in Claude Code:
|
|
135
153
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
npm run build:zova
|
|
140
|
-
npm run deps:vona
|
|
141
|
-
npm run test:e2e
|
|
154
|
+
```text
|
|
155
|
+
/cabloy-spec-generation <business description>
|
|
142
156
|
```
|
|
143
157
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
## 7. Next steps for framework-aware development
|
|
147
|
-
|
|
148
|
-
If you are contributing to framework-aware workflows or using Cabloy CLI generation directly, prefer CLI-backed generation over manual scaffolding.
|
|
158
|
+
Once a bounded WBS increment is approved, execute it with:
|
|
149
159
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
npm run vona :create
|
|
154
|
-
npm run zova :create
|
|
160
|
+
```text
|
|
161
|
+
/cabloy-spec-execution <WBS-ID>
|
|
155
162
|
```
|
|
156
163
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
## 8. Next step: follow the quick start tutorials
|
|
160
|
-
|
|
161
|
-
If you want a beginner-friendly path that connects modules, CRUD, bidirectional contract sharing, and schema-driven workflows into one story, continue with:
|
|
162
|
-
|
|
163
|
-
- [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
|
|
164
|
-
|
|
165
|
-
## 9. Shared verification commands for deeper workflow checks
|
|
166
|
-
|
|
167
|
-
If you are validating framework-aware changes or a broader workflow, use the shared project scripts before declaring a workflow correct:
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
npm run tsc
|
|
171
|
-
npm run test
|
|
172
|
-
npm run build
|
|
173
|
-
```
|
|
164
|
+
These Skills guide planning, specialist implementation, verification, evidence, and progress handoff; they do not replace the suite records that own product, technical, delivery, acceptance, and evidence authority.
|
|
174
165
|
|
|
175
|
-
|
|
166
|
+
Start with [AI Spec-Driven Development](/ai/ai-spec-driven-development), then continue with [Generate a Cabloy Suite Specification](/ai/playbook-spec-generation) and [Execute an Approved Cabloy Specification Increment](/ai/playbook-spec-execution).
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Semantic Presentation Contract
|
|
2
|
+
|
|
3
|
+
<Badge type="tip" text="Common" />
|
|
4
|
+
|
|
5
|
+
A **semantic presentation contract** defines what an audience needs to accomplish in a scene before a project chooses visual structure or a renderer. It connects confirmed product intent and operation-specific contracts to runtime presentation without making presentation metadata authoritative.
|
|
6
|
+
|
|
7
|
+
The semantic model applies across Cabloy editions. UI libraries, renderer identities, supported layout grammar, flavor commands, and generated-output paths remain edition-specific facts that must be verified in the active repository.
|
|
8
|
+
|
|
9
|
+
## What this contract solves
|
|
10
|
+
|
|
11
|
+
Use a semantic presentation contract to avoid:
|
|
12
|
+
|
|
13
|
+
- treating layout syntax or a renderer choice as product or API authority
|
|
14
|
+
- forcing Create, Update, View, list, and filter work through one universal DTO or visual tree
|
|
15
|
+
- duplicating DTO and schema truth in frontend-local field definitions
|
|
16
|
+
- treating visual hiding, route admission, or action visibility as authorization or privacy
|
|
17
|
+
- collapsing distinct audiences, API projections, state owners, or pages into groups or tabs
|
|
18
|
+
|
|
19
|
+
## Start with scene meaning, not a renderer
|
|
20
|
+
|
|
21
|
+
Design the scene in this order:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
audience → task → scene → meaningful business information areas
|
|
25
|
+
→ operation-specific DTO boundary → presentation translation → renderer choice
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- **Audience** is whose work and authority context the scene serves.
|
|
29
|
+
- **Task** is whether that audience is finding, comparing, supplying permitted input, reviewing, or acting.
|
|
30
|
+
- **Scene** is the operation-specific list/filter, Create, Update, View, or purpose-built page context.
|
|
31
|
+
- **Information areas** organize facts by business meaning, such as identity, lifecycle, amount, availability, time, relationships, or immutable snapshots.
|
|
32
|
+
- **Presentation translation** applies order, in-scene visibility, grouping, local placement, and renderer choice to an already authorized contract.
|
|
33
|
+
|
|
34
|
+
Lists support finding and comparison. Create and Update scenes expose only permitted input. View scenes expose complete, audience-appropriate facts. List/filter and entry presentation are independently designed rather than being smaller or larger versions of one another.
|
|
35
|
+
|
|
36
|
+
## Keep authority at the right layer
|
|
37
|
+
|
|
38
|
+
| Layer | Owns | May define | Must not redefine |
|
|
39
|
+
| -------------------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
|
40
|
+
| Product requirements | Business outcome | Audience, task, and meaningful information areas | DTO syntax or component structure |
|
|
41
|
+
| System requirements and operation DTOs | Scene contract | API membership; editable, readonly, derived, hidden, and snapshot boundaries; ownership constraints | Product scope |
|
|
42
|
+
| DTO render metadata | Presentation translation | Order, groups, sections, tabs, supported placement, visible presentation, and renderer identity | API authority, persistence, validation, authorization, state/page ownership, or SSR privacy |
|
|
43
|
+
| Renderer/runtime implementation | Runtime presentation | UI-library-specific markup, input conversion, and interaction | Business and security boundaries |
|
|
44
|
+
|
|
45
|
+
Suites that use PRD and SRS records should preserve that upstream authority chain. Metadata translates a confirmed contract; it does not create one.
|
|
46
|
+
|
|
47
|
+
## Design each scene as an explicit contract
|
|
48
|
+
|
|
49
|
+
Before authoring presentation metadata, make the scene answer these questions:
|
|
50
|
+
|
|
51
|
+
| Record | Questions to answer |
|
|
52
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
53
|
+
| Audience and task | Who is doing what, and under which authority? |
|
|
54
|
+
| Scene | Is this list/filter, Create, Update, View, or a purpose-built experience? |
|
|
55
|
+
| Information areas | Which business facts are needed, and in what input or reading order? |
|
|
56
|
+
| Operation DTO boundary | Which facts are editable, readonly, derived, hidden, live, or immutable snapshots? |
|
|
57
|
+
| Presentation strategy | Is default rendering sufficient, is a shared renderer appropriate, or is a custom renderer justified? |
|
|
58
|
+
| Non-presentation boundaries | Which API, authorization, model/page ownership, scope, and SSR constraints remain unchanged? |
|
|
59
|
+
| Evidence | Which emitted-contract and focused runtime or browser proof demonstrates the translation? |
|
|
60
|
+
|
|
61
|
+
Different tasks can justify different DTO membership and layouts. Absence from an operation DTO is stronger and clearer than visual hiding. A separate audience, API contract, model owner, or page remains separate even when some business facts overlap.
|
|
62
|
+
|
|
63
|
+
## Translate an eligible scene contract into presentation
|
|
64
|
+
|
|
65
|
+
Vona DTO render metadata is the normal translation surface for Cabloy's schema-driven paths. It can express order, semantic groups, sections or tabs where supported, placement, presentation visibility within the resolved scene, and renderer identity or options.
|
|
66
|
+
|
|
67
|
+
It cannot add request or response membership, relax validation, change persistence, authorize browser input, or create server authority. Consume the operation-specific DTO rather than copying fields into a frontend-local schema. If a presentation needs a label or summary relation, make an explicit response-projection decision; presentation convenience does not justify broadening a mutation DTO or API.
|
|
68
|
+
|
|
69
|
+
Cabloy Basic's concrete `formLayout` grammar, block names, and DaisyUI/Tailwind implementation are details of that edition, not cross-edition guarantees. Cabloy Start readers should inspect the active Start repository before relying on a Basic renderer, UI resource, supported layout behavior, or command.
|
|
70
|
+
|
|
71
|
+
## Preserve boundaries that presentation cannot own
|
|
72
|
+
|
|
73
|
+
Presentation does not authorize.
|
|
74
|
+
|
|
75
|
+
- **API membership:** only operation DTOs and endpoint contracts decide what enters or leaves an operation.
|
|
76
|
+
- **Persistence and validation:** metadata cannot add fields, alter stored meaning, or bypass server validation.
|
|
77
|
+
- **Authorization and scope:** action visibility, menus, route admission, and visual hiding are not server authorization, tenant isolation, or owner filtering.
|
|
78
|
+
- **Audience/API separation:** Admin operational projections and Web self-service projections remain distinct when authority, scope, or experience differs.
|
|
79
|
+
- **Model and page ownership:** a visual group cannot merge separate state owners or page architectures.
|
|
80
|
+
- **SSR privacy:** render metadata and hydration flags do not decide whether private data may appear in server HTML.
|
|
81
|
+
|
|
82
|
+
For the related architecture boundaries, read [Admin Resource and Web Self-Service](/fullstack/admin-resource-and-web-self-service), [Navigation Guards Guide](/frontend/navigation-guards-guide), and [SSR Review Checklist](/frontend/ssr-review-checklist).
|
|
83
|
+
|
|
84
|
+
## Choose the renderer after the meaning is clear
|
|
85
|
+
|
|
86
|
+
Use this order:
|
|
87
|
+
|
|
88
|
+
1. Use the default renderer when it preserves the documented business meaning.
|
|
89
|
+
2. Reuse a shared renderer for recurring semantic needs, such as date/time, localized state labels, monetary values, resource identity, or structured details.
|
|
90
|
+
3. Introduce a custom renderer only when shared resources cannot accurately express the required meaning or interaction.
|
|
91
|
+
|
|
92
|
+
A Vona DTO or render-metadata change normally follows the [forward chain](/fullstack/contract-loop-playbook#forward-chain). A new frontend-owned renderer or resource is a [reverse-chain](/fullstack/contract-loop-playbook#reverse-chain) prerequisite before backend metadata references its identity. A mixed change respects both boundaries: establish the frontend resource handoff first when a new renderer will be referenced, then author and verify the backend translation and regenerate consumers.
|
|
93
|
+
|
|
94
|
+
For operational procedures, use the [Contract Loop Playbook](/fullstack/contract-loop-playbook), [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk), and [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend). [Tutorial 4: Custom Form/Table Renderers for Level](/fullstack/tutorial-4-custom-level-renderers) is a Cabloy Basic implementation specimen.
|
|
95
|
+
|
|
96
|
+
## Use Form Layout for structural translation
|
|
97
|
+
|
|
98
|
+
A semantic group represents a meaningful business information area. A section solves local Grid or flow placement. Tabs are for genuinely independent business domains or workflows. Field renderer and field-wrapper behavior remain separate from multi-field structure.
|
|
99
|
+
|
|
100
|
+
[Form Layout Guide](/frontend/form-layout-guide) explains Cabloy Basic's structural grammar and runtime behavior. It does not replace DTO membership, validation, action behavior, or authorization. Read [Form Guide](/frontend/form-guide) for field rendering, validation, and manual or mixed forms.
|
|
101
|
+
|
|
102
|
+
## Review checklist
|
|
103
|
+
|
|
104
|
+
- [ ] Audience, task, scene, and information areas were established before renderer or layout mechanics.
|
|
105
|
+
- [ ] Operation DTO membership establishes editable, readonly, derived, hidden, and snapshot boundaries.
|
|
106
|
+
- [ ] List/filter and entry/detail scenes were considered independently.
|
|
107
|
+
- [ ] Renderer choice preserves business meaning without broadening a DTO or API.
|
|
108
|
+
- [ ] Visual visibility is not being used for authorization, scope, or SSR privacy.
|
|
109
|
+
- [ ] Distinct audience contracts retain their API, state, and page boundaries when required.
|
|
110
|
+
- [ ] New frontend resources complete their reverse contract-loop handoff before backend metadata references them.
|
|
111
|
+
- [ ] Backend-owned contract changes include emitted-contract proof and forward regeneration.
|
|
112
|
+
- [ ] Edition-specific UI, renderer, flavor, and generated-output claims were verified against the active edition.
|
|
113
|
+
|
|
114
|
+
## Related reading
|
|
115
|
+
|
|
116
|
+
- [AI Spec-Driven Development](/ai/ai-spec-driven-development)
|
|
117
|
+
- [Contract Loop Playbook](/fullstack/contract-loop-playbook)
|
|
118
|
+
- [DTO Guide](/backend/dto-guide)
|
|
119
|
+
- [OpenAPI Guide](/backend/openapi-guide)
|
|
120
|
+
- [Form Layout Guide](/frontend/form-layout-guide)
|
|
121
|
+
- [Edition Consistency Checklist](/ai/edition-consistency-checklist)
|
|
@@ -28,7 +28,7 @@ Read the repository marker first:
|
|
|
28
28
|
- `__CABLOY_START__` → inspect the active Start repository before naming a flavor, wrapper, generated package, or site module.
|
|
29
29
|
- both markers → stop: the checkout is ambiguous.
|
|
30
30
|
|
|
31
|
-
The framework model is shared, but the exact flavor names, site baselines, UI layer, assets, scripts, and generated output paths can differ by edition. See [
|
|
31
|
+
The framework model is shared, but the exact flavor names, site baselines, UI layer, assets, scripts, and generated output paths can differ by edition. See [Cabloy Editions: Working in an Existing Checkout](/editions/overview#working-in-an-existing-checkout) and [Edition Collaboration Differences](/fullstack/edition-collaboration-differences).
|
|
32
32
|
|
|
33
33
|
### Confirm that a new site is needed
|
|
34
34
|
|
|
@@ -174,7 +174,7 @@ If the generated artifacts are correct and `npm run deps:vona` completed but Von
|
|
|
174
174
|
|
|
175
175
|
## Verify through the Vona boundary
|
|
176
176
|
|
|
177
|
-
A standalone
|
|
177
|
+
A Zova standalone SSR development server (the default `9000` entry) can help with page iteration, but it does not prove copied artifacts, Vona site matching, generated type handoff, or production-like hydration. An independent SSR Site/flavor remains a separately deployable application boundary; it is not another name for Zova standalone SSR.
|
|
178
178
|
|
|
179
179
|
Run the narrowest meaningful checks first:
|
|
180
180
|
|