cabloy 5.1.155 → 5.1.156
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/.claude/skills/cabloy-contract-loop/SKILL.md +1 -1
- package/.claude/skills/cabloy-spec-generation/SKILL.md +1 -1
- package/.claude/skills/cabloy-workflow/SKILL.md +3 -3
- package/CHANGELOG.md +13 -0
- package/CLAUDE.md +1 -1
- package/README.md +18 -18
- package/package.json +1 -1
- package/repo-docs/.vitepress/public/CNAME +1 -1
- package/repo-docs/ai/edition-consistency-checklist.md +7 -7
- package/repo-docs/backend/quickstart.md +1 -1
- package/repo-docs/blogs/ai-react-nextjs-enterprise-architecture-cabloy/index.md +8 -8
- package/repo-docs/blogs/cabloy-fullstack-resource-addressing/index.md +13 -13
- package/repo-docs/blogs/vue-object-oriented-zova-beginner-mental-model/index.md +6 -6
- package/repo-docs/editions/cabloy-start.md +10 -12
- package/repo-docs/editions/choosing-between-basic-and-start.md +6 -7
- package/repo-docs/editions/detection.md +1 -1
- package/repo-docs/editions/overview.md +26 -14
- package/repo-docs/frontend/foundation.md +1 -1
- package/repo-docs/frontend/introduction.md +1 -1
- package/repo-docs/frontend/scripts.md +2 -2
- package/repo-docs/fullstack/deploy-cloudflare-docker.md +1 -1
- package/repo-docs/fullstack/edition-collaboration-differences.md +2 -2
- package/repo-docs/fullstack/introduction.md +7 -3
- package/repo-docs/fullstack/openapi-to-sdk.md +1 -1
- package/repo-docs/fullstack/quickstart.md +4 -4
- package/repo-docs/fullstack/vona-zova-integration.md +1 -1
- package/repo-docs/index.md +1 -1
- package/repo-docs/reference/glossary.md +8 -5
- package/repo-docs/reference/introduction.md +1 -1
- package/repo-docs/reference/repo-scripts.md +12 -4
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-shared/package.json +4 -4
- package/vona/pnpm-lock.yaml +8 -3
- package/vona/src/suite/a-home/modules/home-user/src/bean/meta.redlock.ts +2 -1
- package/vona/src/suite/a-home/modules/home-user/src/service/roleAdapter.ts +115 -6
- package/vona/src/suite/a-home/modules/home-user/test/role.test.ts +163 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/src/.metadata/index.ts +26 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/src/bean/eventListener.roleMembershipChanged.ts +25 -0
- package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-queue/src/lib/beanQueueBase.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-queue/src/service/queue.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/.metadata/index.ts +15 -0
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/bean.role.ts +44 -3
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/event.roleMembershipChanged.ts +16 -0
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/types/role.ts +12 -1
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/pnpm-lock.yaml +1 -1
package/.cabloy-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
5.1.
|
|
1
|
+
5.1.156
|
|
@@ -225,7 +225,7 @@ Important Cabloy Basic reverse-sync rule:
|
|
|
225
225
|
- if the change was consumer-side, low-confidence, cross-edition, or happened outside the Claude hook path, run the reverse sync flow deliberately yourself
|
|
226
226
|
- prefer visible proof under `zova/src/**/.metadata/**` when it is available; if the effective handoff only appears in `.zova-rest`, treat the safeguard as conservative reminder/auto-sync assistance rather than strict proof
|
|
227
227
|
|
|
228
|
-
For Cabloy Start, verify the exact Start-specific flavor names, paths, SSR site baselines, and project assets in the
|
|
228
|
+
For Cabloy Start, verify the exact Start-specific flavor names, paths, SSR site baselines, and project assets in the active Start repository.
|
|
229
229
|
|
|
230
230
|
### Schema-driven UI decision branch
|
|
231
231
|
|
|
@@ -35,7 +35,7 @@ From the repository root, inspect:
|
|
|
35
35
|
Interpret the markers as follows:
|
|
36
36
|
|
|
37
37
|
- `__CABLOY_BASIC__` present: use Cabloy Basic source and public-doc assumptions;
|
|
38
|
-
- `__CABLOY_START__` present: use Cabloy Start source and resolve its own
|
|
38
|
+
- `__CABLOY_START__` present: use Cabloy Start source and resolve its own site, UI, flavor, and command details;
|
|
39
39
|
- neither present: do not make strong edition-specific assumptions; inspect the nearby project shape and ask the user to confirm the edition.
|
|
40
40
|
|
|
41
41
|
Never copy Basic flavor names, SSR assumptions, UI-library assumptions, or exact command lines into a Start record without verifying them in the active Start repository. The document architecture is shared; edition-specific runtime facts are not.
|
|
@@ -267,12 +267,12 @@ Bias toward:
|
|
|
267
267
|
|
|
268
268
|
Bias toward:
|
|
269
269
|
|
|
270
|
-
- the
|
|
270
|
+
- the public MIT-licensed edition maintained in its own repository
|
|
271
271
|
- the Start repo marker
|
|
272
|
-
- the
|
|
272
|
+
- the active Start repository source
|
|
273
273
|
- Vuetify-sensitive examples
|
|
274
274
|
- Start-specific frontend flavor names
|
|
275
|
-
- Start-specific suites/modules, SSR site baselines, project assets, and
|
|
275
|
+
- Start-specific suites/modules, SSR site baselines, project assets, and separate-repository structure
|
|
276
276
|
|
|
277
277
|
Do not silently reuse Basic examples when Start-specific assumptions matter.
|
|
278
278
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.1.156
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Add a `bean.role` adapter.
|
|
8
|
+
- Update queue push capabilities.
|
|
9
|
+
- Move documentation from `docs.cabloy.com` to `cabloy.com`.
|
|
10
|
+
|
|
11
|
+
### Improvements
|
|
12
|
+
|
|
13
|
+
- Refresh basic getting-started documentation and README content.
|
|
14
|
+
- Update repository scripts documentation and package configuration.
|
|
15
|
+
|
|
3
16
|
## 5.1.155
|
|
4
17
|
|
|
5
18
|
### Features
|
package/CLAUDE.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
Detect the active edition from the repository-root marker before making edition-sensitive assumptions:
|
|
6
6
|
|
|
7
7
|
- exactly `__CABLOY_BASIC__` present → Cabloy Basic, the public framework/reference edition
|
|
8
|
-
- exactly `__CABLOY_START__` present → Cabloy Start, the
|
|
8
|
+
- exactly `__CABLOY_START__` present → Cabloy Start, the public MIT-licensed edition maintained in its own repository
|
|
9
9
|
- both markers present → treat the checkout as invalid or ambiguous and stop before giving edition-specific guidance
|
|
10
10
|
- neither marker present → inspect the owning `package.json` and nearby repository structure, then ask before making an edition-specific assumption
|
|
11
11
|
|
package/README.md
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
[](https://github.com/cabloy/cabloy/blob/main/LICENSE)
|
|
4
4
|
[](https://www.npmjs.com/package/cabloy)
|
|
5
5
|
[](https://www.npmjs.com/package/cabloy)
|
|
6
|
-
[](https://
|
|
6
|
+
[](https://cabloy.com)
|
|
7
7
|
[](https://cabloy.com)
|
|
8
8
|
|
|
9
9
|
Cabloy is a Node.js fullstack framework for AI vibe coding.
|
|
10
10
|
|
|
11
11
|
**One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows, docs, and skills.**
|
|
12
12
|
|
|
13
|
-
Instead of stitching separate backend and frontend stacks together, Cabloy keeps their contracts, tooling, and guidance connected in one repository. Vona, Zova
|
|
13
|
+
Instead of stitching separate backend and frontend stacks together, Cabloy keeps their contracts, tooling, and guidance connected in one repository. Vona is its backend framework and runtime layer, and Zova is its frontend framework and application layer. Cabloy Basic and Cabloy Start are related, complete edition baselines built on that shared architecture; see [Editions Overview](https://cabloy.com/editions/overview) for their deliberate differences.
|
|
14
14
|
|
|
15
|
-
[Documentation](https://
|
|
15
|
+
[Documentation](https://cabloy.com) · [npm](https://www.npmjs.com/package/cabloy) · [Web Demo](https://cabloy.com) · [Admin Demo](https://cabloy.com/admin) · [GitHub](https://github.com/cabloy/cabloy)
|
|
16
16
|
|
|
17
17
|
## Fullstack Principles
|
|
18
18
|
|
|
@@ -27,7 +27,7 @@ Cabloy’s fullstack model is built around two core principles:
|
|
|
27
27
|
- **Backend -> Frontend**: Vona emits Swagger/OpenAPI contracts that Zova can use to generate SDKs and related schema-aware helpers
|
|
28
28
|
- **Frontend -> Backend**: Zova generates structural metadata and typing surfaces such as routes, components, and icons that can improve backend-side tooling and type hints
|
|
29
29
|
|
|
30
|
-
For the complete explanation, see [Fullstack Introduction](https://
|
|
30
|
+
For the complete explanation, see [Fullstack Introduction](https://cabloy.com/fullstack/introduction), [Vona + Zova Integration](https://cabloy.com/fullstack/vona-zova-integration), [Backend OpenAPI to Frontend SDK](https://cabloy.com/fullstack/openapi-to-sdk), and [Frontend Metadata Back to Backend](https://cabloy.com/fullstack/frontend-metadata-to-backend).
|
|
31
31
|
|
|
32
32
|
## Get Started
|
|
33
33
|
|
|
@@ -82,17 +82,17 @@ pnpm_config_minimum_release_age=0 npm create cabloy
|
|
|
82
82
|
|
|
83
83
|
If you already created the project directory and only need to rerun initialization, use the same environment variable with `npm run init`.
|
|
84
84
|
|
|
85
|
-
For **Cabloy Start**,
|
|
85
|
+
For **Cabloy Start**, clone the public MIT-licensed repository at `https://github.com/cabloy/cabloy-start`, then run `npm run init`. For the complete Start onboarding flow, read the [Cabloy Start](https://cabloy.com/editions/cabloy-start) page.
|
|
86
86
|
|
|
87
87
|
Then continue with the framework docs:
|
|
88
88
|
|
|
89
|
-
- [Fullstack Quickstart](https://
|
|
90
|
-
- [Documentation](https://
|
|
91
|
-
- [Fullstack Introduction](https://
|
|
92
|
-
- [Backend Introduction](https://
|
|
93
|
-
- [Frontend Introduction](https://
|
|
94
|
-
- [Editions Overview](https://
|
|
95
|
-
- [Choosing Between Cabloy Basic and Cabloy Start](https://
|
|
89
|
+
- [Fullstack Quickstart](https://cabloy.com/fullstack/quickstart)
|
|
90
|
+
- [Documentation](https://cabloy.com)
|
|
91
|
+
- [Fullstack Introduction](https://cabloy.com/fullstack/introduction)
|
|
92
|
+
- [Backend Introduction](https://cabloy.com/backend/introduction)
|
|
93
|
+
- [Frontend Introduction](https://cabloy.com/frontend/introduction)
|
|
94
|
+
- [Editions Overview](https://cabloy.com/editions/overview)
|
|
95
|
+
- [Choosing Between Cabloy Basic and Cabloy Start](https://cabloy.com/editions/choosing-between-basic-and-start)
|
|
96
96
|
|
|
97
97
|
To upgrade an existing Cabloy project:
|
|
98
98
|
|
|
@@ -168,16 +168,16 @@ npm run build
|
|
|
168
168
|
|
|
169
169
|
For more details, see:
|
|
170
170
|
|
|
171
|
-
- [Editions Overview](https://
|
|
172
|
-
- [Choosing Between Cabloy Basic and Cabloy Start](https://
|
|
173
|
-
- [Repo Scripts](https://
|
|
174
|
-
- [Package Map](https://
|
|
175
|
-
- [AI Development Introduction](https://
|
|
171
|
+
- [Editions Overview](https://cabloy.com/editions/overview)
|
|
172
|
+
- [Choosing Between Cabloy Basic and Cabloy Start](https://cabloy.com/editions/choosing-between-basic-and-start)
|
|
173
|
+
- [Repo Scripts](https://cabloy.com/reference/repo-scripts)
|
|
174
|
+
- [Package Map](https://cabloy.com/reference/package-map)
|
|
175
|
+
- [AI Development Introduction](https://cabloy.com/ai/introduction)
|
|
176
176
|
|
|
177
177
|
Contribution guidelines:
|
|
178
178
|
|
|
179
179
|
- prefer CLI-backed workflows with `npm run vona` and `npm run zova`
|
|
180
|
-
- put user-facing and agent-facing guidance in [
|
|
180
|
+
- put user-facing and agent-facing guidance in [cabloy.com](https://cabloy.com)
|
|
181
181
|
- put maintainer rationale, architecture notes, and engineering ADRs in [repo-docs-internal/](https://github.com/cabloy/cabloy/tree/main/repo-docs-internal)
|
|
182
182
|
- put product and business specifications, delivery plans, and suite-local ADRs in [repo-specs/](https://github.com/cabloy/cabloy/tree/main/repo-specs)
|
|
183
183
|
- verify framework changes with the narrowest meaningful checks first, then shared root scripts when broader confidence is needed
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
cabloy.com
|
|
@@ -16,8 +16,8 @@ Before checking details, confirm that the content still tells the same baseline
|
|
|
16
16
|
|
|
17
17
|
- **Cabloy Basic** is the public framework/reference edition
|
|
18
18
|
- `npm create cabloy` creates the default Cabloy Basic project route
|
|
19
|
-
- **Cabloy Start** is the
|
|
20
|
-
- Cabloy Start is used by cloning
|
|
19
|
+
- **Cabloy Start** is the public MIT-licensed edition maintained in its own repository
|
|
20
|
+
- Cabloy Start is used by cloning its public repository directly and following its initialization workflow
|
|
21
21
|
- both editions share the same Cabloy fullstack core
|
|
22
22
|
- both editions share a frontend engineering layer built around Zova, Vue, Vite, Quasar tooling, and related libraries
|
|
23
23
|
- the editions diverge in UI layer, frontend flavors, suites/modules, SSR site baselines, project assets, and some generated outputs
|
|
@@ -38,13 +38,13 @@ Confirm that the content:
|
|
|
38
38
|
Confirm that the content states or implies the right project-entry model:
|
|
39
39
|
|
|
40
40
|
- **Cabloy Basic** → `npm create cabloy`
|
|
41
|
-
- **Cabloy Start** →
|
|
41
|
+
- **Cabloy Start** → public repository clone and edition-specific initialization workflow
|
|
42
42
|
|
|
43
43
|
Watch for drift such as:
|
|
44
44
|
|
|
45
45
|
- implying that Cabloy Start is created through `npm create cabloy`
|
|
46
46
|
- implying that both editions use the same bootstrap path
|
|
47
|
-
- omitting the Start
|
|
47
|
+
- omitting the Start public-repository and edition-specific initialization model when it matters to the workflow
|
|
48
48
|
|
|
49
49
|
## Checklist 3: shared core vs edition divergence is separated cleanly
|
|
50
50
|
|
|
@@ -88,7 +88,7 @@ Avoid wording that makes Quasar sound like the edition UI component library when
|
|
|
88
88
|
For scripts, flavors, paths, and examples, confirm that:
|
|
89
89
|
|
|
90
90
|
- Basic examples use Basic markers and Basic flavor names
|
|
91
|
-
- Start examples tell the reader to verify the Start
|
|
91
|
+
- Start examples tell the reader to verify the active Start repository directly
|
|
92
92
|
- Start workflows do not silently reuse Basic script or flavor assumptions
|
|
93
93
|
- SSR site baseline assumptions match the edition being discussed
|
|
94
94
|
- project-asset references match the repo being discussed
|
|
@@ -119,7 +119,7 @@ When content ends with verification steps, confirm that it reminds the reader or
|
|
|
119
119
|
- generated outputs
|
|
120
120
|
- project assets
|
|
121
121
|
|
|
122
|
-
For Start-sensitive workflows, confirm that verification points back to the
|
|
122
|
+
For Start-sensitive workflows, confirm that verification points back to the active Start repository rather than pretending the current Basic repo is the direct source of truth.
|
|
123
123
|
|
|
124
124
|
## Checklist 8: wording about system size stays appropriately scoped
|
|
125
125
|
|
|
@@ -137,7 +137,7 @@ Before you finish an edition-aware change, ask:
|
|
|
137
137
|
1. Did I clearly separate shared core from edition-specific divergence?
|
|
138
138
|
2. Did I preserve the correct Basic vs Start creation path?
|
|
139
139
|
3. Did I avoid turning UI difference into the whole story?
|
|
140
|
-
4. Did I point Start-specific operational truth back to the
|
|
140
|
+
4. Did I point Start-specific operational truth back to the active Start repository where needed?
|
|
141
141
|
5. Do docs, rules, and skills each play their proper role?
|
|
142
142
|
|
|
143
143
|
## Read together with
|
|
@@ -87,7 +87,7 @@ Legacy Vona docs described creating projects from templates such as `cabloy-basi
|
|
|
87
87
|
That history still matters, because it explains why the Cabloy ecosystem now supports two editions:
|
|
88
88
|
|
|
89
89
|
- **Cabloy Basic**: the public framework/reference edition, including the project route created by `npm create cabloy`, with a shared frontend engineering layer and a DaisyUI + Tailwind CSS oriented UI layer in the current public examples
|
|
90
|
-
- **Cabloy Start**: the
|
|
90
|
+
- **Cabloy Start**: the public MIT-licensed edition maintained in its own repository, accessed by cloning that repository and following its initialization workflow, with a Vuetify-oriented UI layer plus edition-specific SSR site baselines and project assets
|
|
91
91
|
|
|
92
92
|
In the current monorepo docs, do not treat these as just template names. Treat them as edition boundaries that affect frontend integration, scripts, UI assumptions, and examples.
|
|
93
93
|
|
|
@@ -163,15 +163,15 @@ npm run dev:zova:admin
|
|
|
163
163
|
npm run dev:zova:web
|
|
164
164
|
```
|
|
165
165
|
|
|
166
|
-
Then follow the [Cabloy Fullstack Quick Start Tutorials](https://
|
|
166
|
+
Then follow the [Cabloy Fullstack Quick Start Tutorials](https://cabloy.com/fullstack/tutorials-overview). Start with a small module and experience how CRUD, frontend/backend contract sharing, and a fullstack workflow connect in practice.
|
|
167
167
|
|
|
168
|
-
If you are looking not for another component library or another Next.js starter, but for a framework built for enterprise fullstack collaboration, start with the [Cabloy Fullstack Quickstart](https://
|
|
168
|
+
If you are looking not for another component library or another Next.js starter, but for a framework built for enterprise fullstack collaboration, start with the [Cabloy Fullstack Quickstart](https://cabloy.com/fullstack/quickstart) and give CabloyJS a try.
|
|
169
169
|
|
|
170
170
|
## Further reading
|
|
171
171
|
|
|
172
|
-
- [Cabloy Fullstack Introduction](https://
|
|
173
|
-
- [Cabloy Fullstack Quickstart](https://
|
|
174
|
-
- [Cabloy Suites and Modules](https://
|
|
175
|
-
- [Cabloy Vona + Zova Integration](https://
|
|
176
|
-
- [Cabloy Contract Loop Playbook](https://
|
|
177
|
-
- [Cabloy Fullstack Quick Start Tutorials](https://
|
|
172
|
+
- [Cabloy Fullstack Introduction](https://cabloy.com/fullstack/introduction)
|
|
173
|
+
- [Cabloy Fullstack Quickstart](https://cabloy.com/fullstack/quickstart)
|
|
174
|
+
- [Cabloy Suites and Modules](https://cabloy.com/fullstack/suites-and-modules)
|
|
175
|
+
- [Cabloy Vona + Zova Integration](https://cabloy.com/fullstack/vona-zova-integration)
|
|
176
|
+
- [Cabloy Contract Loop Playbook](https://cabloy.com/fullstack/contract-loop-playbook)
|
|
177
|
+
- [Cabloy Fullstack Quick Start Tutorials](https://cabloy.com/fullstack/tutorials-overview)
|
|
@@ -36,7 +36,7 @@ This is not one universal string that travels through every layer, nor is it zer
|
|
|
36
36
|
|
|
37
37
|
IoC asks a focused question: **who creates, owns, disposes of, and supplies a runtime capability?**
|
|
38
38
|
|
|
39
|
-
In Zova, a Bean may be held in the `sys`, `app`, or `ctx` container scope. Code can use `@Use` for injection or use containers and Scope for dependency lookup. This single model keeps state sharing, lifecycle behavior, and cross-module collaboration from drifting into unrelated mechanisms. [IoC and Beans](https://
|
|
39
|
+
In Zova, a Bean may be held in the `sys`, `app`, or `ctx` container scope. Code can use `@Use` for injection or use containers and Scope for dependency lookup. This single model keeps state sharing, lifecycle behavior, and cross-module collaboration from drifting into unrelated mechanisms. [IoC and Beans](https://cabloy.com/frontend/ioc-and-beans) explains that model in detail.
|
|
40
40
|
|
|
41
41
|
Addressing asks a broader question: **when one layer needs something, which identity expresses the target, who resolves it, and what kind of resource results?**
|
|
42
42
|
|
|
@@ -66,7 +66,7 @@ Cabloy defines a **suite** as a business-domain composition boundary and a **mod
|
|
|
66
66
|
|
|
67
67
|
In the Student sample, the domain is `a-training` and the module is `training-student`. Vona and Zova both have corresponding suite/module structures, so backend Controllers, Services, Models, Entities, and DTOs can evolve along the same business boundary as frontend pages, APIs, Models, and metadata. What is shared first is a **business coordinate**, not a block of memory shared by Node.js and the browser.
|
|
68
68
|
|
|
69
|
-
That is why a module name matters more than a directory position. Directories can be reorganized and implementation files can move, while a stable module namespace can continue to carry the logical identity of Services, Models, APIs, locales, errors, Resources, and frontend render resources. See [Suites and Modules](https://
|
|
69
|
+
That is why a module name matters more than a directory position. Directories can be reorganized and implementation files can move, while a stable module namespace can continue to carry the logical identity of Services, Models, APIs, locales, errors, Resources, and frontend render resources. See [Suites and Modules](https://cabloy.com/fullstack/suites-and-modules) for the boundary between suites and modules.
|
|
70
70
|
|
|
71
71
|
## Coordinate two: Bean full names and the Scope facade
|
|
72
72
|
|
|
@@ -101,7 +101,7 @@ const students = await this.scope.model.student.select();
|
|
|
101
101
|
const sku = await this.$scope.commerceCatalog.model.sku.getById(id);
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
Scope does not create another identity system. It raises a container-level full name into an everyday way to navigate a module’s resource catalog. Backend Scope can organize services, models, entities, configuration, locales, and errors; frontend Scope commonly exposes facades for configuration, constants, locales, errors, APIs, and API Schemas. Both [Vona Backend Foundation](https://
|
|
104
|
+
Scope does not create another identity system. It raises a container-level full name into an everyday way to navigate a module’s resource catalog. Backend Scope can organize services, models, entities, configuration, locales, and errors; frontend Scope commonly exposes facades for configuration, constants, locales, errors, APIs, and API Schemas. Both [Vona Backend Foundation](https://cabloy.com/backend/foundation) and [Zova Module Scope](https://cabloy.com/frontend/module-scope) describe that division of responsibility.
|
|
105
105
|
|
|
106
106
|
There is an important limit: Scope lookup can resolve only resources from modules that have already been composed into the active application. A correct string does not install, load, or order an absent module. Module dependencies, suite/application composition, and runtime lookup are related but different concerns. The first establishes availability, ordering, and versioning; only then can the latter retrieve a resource from the composed modules.
|
|
107
107
|
|
|
@@ -187,7 +187,7 @@ If this field needs specialized controls instead of the default Renderer, it can
|
|
|
187
187
|
|
|
188
188
|
That does not mean each field automatically grows a complete UI, nor that every presentation decision belongs in the backend. It means the field’s business meaning, data contract, and permitted exposure do not have to be copied into backend DTOs, frontend request types, form rules, table columns, and response post-processing—and then manually kept aligned.
|
|
189
189
|
|
|
190
|
-
In this **forward contract chain**, backend Controllers, DTOs, Entities, and validation rules are the source of truth. Vona generates OpenAPI; Zova then generates or consumes SDK/Schema contract material. When a backend contract changes, the recommended path is to propagate that truth forward rather than hand-edit multiple frontend copies. [Backend OpenAPI to Frontend SDK](https://
|
|
190
|
+
In this **forward contract chain**, backend Controllers, DTOs, Entities, and validation rules are the source of truth. Vona generates OpenAPI; Zova then generates or consumes SDK/Schema contract material. When a backend contract changes, the recommended path is to propagate that truth forward rather than hand-edit multiple frontend copies. [Backend OpenAPI to Frontend SDK](https://cabloy.com/fullstack/openapi-to-sdk) and [One Contract Surface, Four Uses](https://cabloy.com/fullstack/tutorial-6-one-contract-four-uses) describe the boundary of that chain.
|
|
191
191
|
|
|
192
192
|
## Coordinate five: routes choose a UI scene; Resource identities choose business context
|
|
193
193
|
|
|
@@ -280,7 +280,7 @@ This has two practical benefits:
|
|
|
280
280
|
|
|
281
281
|
For example, a `training-student` frontend Model can initialize the generic owner with `training-student:student`, then add semantic entry points for business actions such as `summary(id)` or `deleteForce(id)` while reusing that owner’s item query, mutation, and invalidation boundary.
|
|
282
282
|
|
|
283
|
-
One more distinction matters: a call-site value such as `['select', ...]` or `['item', id, action]` is only a logical query key. The effective cache identity also incorporates Model Bean identity and selector. A short query key is therefore not an address that is globally unique across the application. [Model Resource Internals Deep Dive](https://
|
|
283
|
+
One more distinction matters: a call-site value such as `['select', ...]` or `['item', id, action]` is only a logical query key. The effective cache identity also incorporates Model Bean identity and selector. A short query key is therefore not an address that is globally unique across the application. [Model Resource Internals Deep Dive](https://cabloy.com/frontend/model-resource-internals-deep-dive) and [Model State Guide](https://cabloy.com/frontend/model-state-guide) explain this owner/state identity layer.
|
|
284
284
|
|
|
285
285
|
## Coordinate seven: Schema metadata selects concrete UI capabilities
|
|
286
286
|
|
|
@@ -336,7 +336,7 @@ In other words, `schemaRow` is the current select-response row Schema, and `rest
|
|
|
336
336
|
|
|
337
337
|
Cabloy resource addressing therefore does not stop at an API. Table cells, form fields, image scenes, and Behaviors can also be selected through module-qualified, scene-aware frontend resource identities. Field metadata can, for example, refer to `training-student:formFieldLevel`, which a registered frontend capability resolves and renders.
|
|
338
338
|
|
|
339
|
-
This does not mean backend code executes frontend components. More precisely, backend contracts or metadata can declare which frontend rendering resource should be selected at a point; the frontend still owns the renderer implementation and runtime. Frontend-owned facts such as routes, components, icons, table cells, and form fields also have a reverse contract handoff: refresh the frontend metadata/build output first, then let Vona consume the synchronized local dependency result. [Frontend Metadata Back to Backend](https://
|
|
339
|
+
This does not mean backend code executes frontend components. More precisely, backend contracts or metadata can declare which frontend rendering resource should be selected at a point; the frontend still owns the renderer implementation and runtime. Frontend-owned facts such as routes, components, icons, table cells, and form fields also have a reverse contract handoff: refresh the frontend metadata/build output first, then let Vona consume the synchronized local dependency result. [Frontend Metadata Back to Backend](https://cabloy.com/fullstack/frontend-metadata-to-backend) describes that reverse chain.
|
|
340
340
|
|
|
341
341
|
The two directions are distinct:
|
|
342
342
|
|
|
@@ -407,13 +407,13 @@ IoC is one runtime foundation of that chain, but not the whole chain. The engine
|
|
|
407
407
|
|
|
408
408
|
### Concepts and workflows
|
|
409
409
|
|
|
410
|
-
- [Cabloy: Suites and Modules](https://
|
|
411
|
-
- [Cabloy: Vona Backend Foundation](https://
|
|
412
|
-
- [Cabloy: Zova IoC and Beans](https://
|
|
413
|
-
- [Cabloy: Zova Module Scope](https://
|
|
414
|
-
- [Cabloy: Backend OpenAPI to Frontend SDK](https://
|
|
415
|
-
- [Cabloy: Frontend Metadata Back to Backend](https://
|
|
416
|
-
- [Cabloy: Model Resource Internals Deep Dive](https://
|
|
410
|
+
- [Cabloy: Suites and Modules](https://cabloy.com/fullstack/suites-and-modules)
|
|
411
|
+
- [Cabloy: Vona Backend Foundation](https://cabloy.com/backend/foundation)
|
|
412
|
+
- [Cabloy: Zova IoC and Beans](https://cabloy.com/frontend/ioc-and-beans)
|
|
413
|
+
- [Cabloy: Zova Module Scope](https://cabloy.com/frontend/module-scope)
|
|
414
|
+
- [Cabloy: Backend OpenAPI to Frontend SDK](https://cabloy.com/fullstack/openapi-to-sdk)
|
|
415
|
+
- [Cabloy: Frontend Metadata Back to Backend](https://cabloy.com/fullstack/frontend-metadata-to-backend)
|
|
416
|
+
- [Cabloy: Model Resource Internals Deep Dive](https://cabloy.com/frontend/model-resource-internals-deep-dive)
|
|
417
417
|
|
|
418
418
|
### Source samples verified for this article
|
|
419
419
|
|
|
@@ -475,9 +475,9 @@ If you already know Vue 3, try writing one small Zova feature: one Controller, o
|
|
|
475
475
|
|
|
476
476
|
## Further reading
|
|
477
477
|
|
|
478
|
-
- [Zova Frontend Foundation](https://
|
|
479
|
-
- [Reading Zova for Vue Developers](https://
|
|
480
|
-
- [Zova vs Vue 3 Comparison](https://
|
|
481
|
-
- [IoC and Beans](https://
|
|
482
|
-
- [State Architecture for Vue Developers](https://
|
|
483
|
-
- [Model Architecture](https://
|
|
478
|
+
- [Zova Frontend Foundation](https://cabloy.com/frontend/foundation)
|
|
479
|
+
- [Reading Zova for Vue Developers](https://cabloy.com/frontend/reading-zova-for-vue-developers)
|
|
480
|
+
- [Zova vs Vue 3 Comparison](https://cabloy.com/frontend/zova-vs-vue3-comparison)
|
|
481
|
+
- [IoC and Beans](https://cabloy.com/frontend/ioc-and-beans)
|
|
482
|
+
- [State Architecture for Vue Developers](https://cabloy.com/frontend/state-architecture-for-vue-developers)
|
|
483
|
+
- [Model Architecture](https://cabloy.com/frontend/model-architecture)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cabloy Start
|
|
2
2
|
|
|
3
|
-
Cabloy Start is the
|
|
3
|
+
Cabloy Start is the public MIT-licensed edition. It is a sibling repository that shares the Cabloy fullstack direction while intentionally differing from Cabloy Basic.
|
|
4
4
|
|
|
5
5
|
## Repository marker
|
|
6
6
|
|
|
@@ -14,27 +14,25 @@ Use that marker before choosing examples, UI assumptions, or automation behavior
|
|
|
14
14
|
|
|
15
15
|
Use Cabloy Start as the edition-aware target when work depends on:
|
|
16
16
|
|
|
17
|
-
- direct use of the
|
|
17
|
+
- direct use of the public Cabloy Start repository source
|
|
18
18
|
- Vuetify-specific frontend workflows
|
|
19
19
|
- Cabloy Start flavor names in frontend scripts
|
|
20
|
-
- edition-specific module composition in the
|
|
21
|
-
-
|
|
20
|
+
- edition-specific module composition in the active Start repository
|
|
21
|
+
- separate-repository structure and edition-specific project composition
|
|
22
22
|
- edition-specific SSR site baselines and project assets
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## Clone and initialize
|
|
25
25
|
|
|
26
|
-
Cabloy Start is
|
|
26
|
+
Cabloy Start is public and MIT-licensed. It does not use the default `npm create cabloy` project route.
|
|
27
27
|
|
|
28
28
|
To use Cabloy Start:
|
|
29
29
|
|
|
30
|
-
1.
|
|
31
|
-
2.
|
|
32
|
-
3. run the edition initialization flow in the cloned project
|
|
30
|
+
1. clone the public repository directly
|
|
31
|
+
2. run the edition initialization flow in the cloned project
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
Repository:
|
|
35
34
|
|
|
36
|
-
-
|
|
37
|
-
- Repository: `https://github.com/cabloy/cabloy-start`
|
|
35
|
+
- `https://github.com/cabloy/cabloy-start`
|
|
38
36
|
|
|
39
37
|
Clone the repository:
|
|
40
38
|
|
|
@@ -6,7 +6,7 @@ This guide helps you choose the right Cabloy edition before you start a new proj
|
|
|
6
6
|
|
|
7
7
|
Choose **Cabloy Basic** when you want the public framework/reference edition, the default `npm create cabloy` project route, and a faster path for open, community-oriented, or small-to-medium system development.
|
|
8
8
|
|
|
9
|
-
Choose **Cabloy Start** when you want the
|
|
9
|
+
Choose **Cabloy Start** when you want the public MIT-licensed edition in its own repository and a stronger baseline for more complex business systems built around Start-oriented SSR sites, project assets, and a Vuetify-aligned UI layer.
|
|
10
10
|
|
|
11
11
|
## What stays the same in both editions
|
|
12
12
|
|
|
@@ -35,9 +35,8 @@ Cabloy Basic is usually the better fit when you want:
|
|
|
35
35
|
|
|
36
36
|
Cabloy Start is usually the better fit when you want:
|
|
37
37
|
|
|
38
|
-
- the
|
|
39
|
-
-
|
|
40
|
-
- direct cloning of the Start repository after authorization
|
|
38
|
+
- the public MIT-licensed edition maintained in its own repository
|
|
39
|
+
- direct cloning of the public Start repository
|
|
41
40
|
- Start-specific flavors, SSR site baselines, and project assets
|
|
42
41
|
- a UI layer aligned with Vuetify
|
|
43
42
|
- a stronger starting point for more complex business systems
|
|
@@ -48,7 +47,7 @@ Cabloy Start is usually the better fit when you want:
|
|
|
48
47
|
### Project creation path
|
|
49
48
|
|
|
50
49
|
- **Cabloy Basic**: create the project with `npm create cabloy`
|
|
51
|
-
- **Cabloy Start**:
|
|
50
|
+
- **Cabloy Start**: clone the public repository directly, then run `npm run init`
|
|
52
51
|
|
|
53
52
|
### UI strategy
|
|
54
53
|
|
|
@@ -58,7 +57,7 @@ Cabloy Start is usually the better fit when you want:
|
|
|
58
57
|
### Repo and asset model
|
|
59
58
|
|
|
60
59
|
- **Cabloy Basic**: public repository and public reference materials
|
|
61
|
-
- **Cabloy Start**:
|
|
60
|
+
- **Cabloy Start**: separate public repository with edition-specific SSR sites and project assets
|
|
62
61
|
|
|
63
62
|
### AI workflow assumptions
|
|
64
63
|
|
|
@@ -72,7 +71,7 @@ This is why edition detection matters so much for AI vibe coding.
|
|
|
72
71
|
Use this rule when you need a fast decision:
|
|
73
72
|
|
|
74
73
|
1. If you want the public, default, `npm create cabloy` path, choose **Cabloy Basic**.
|
|
75
|
-
2. If you want the licensed
|
|
74
|
+
2. If you want the public MIT-licensed Start repository with Start-oriented assets, a Vuetify-based business-system baseline, and a clone-plus-`npm run init` onboarding path, choose **Cabloy Start**.
|
|
76
75
|
3. If AI workflow accuracy matters for UI generation, SSR site assumptions, or flavor-specific commands, confirm the edition before writing prompts, rules, skills, or docs.
|
|
77
76
|
|
|
78
77
|
## Read together with
|
|
@@ -16,7 +16,7 @@ The two editions share many concepts but differ in important operational details
|
|
|
16
16
|
- frontend UI library assumptions
|
|
17
17
|
- flavor-specific frontend scripts
|
|
18
18
|
- module availability
|
|
19
|
-
- value-add project content
|
|
19
|
+
- Start-specific value-add project content
|
|
20
20
|
|
|
21
21
|
If an agent skips edition detection, it may generate the wrong instructions, recommend the wrong module, or use the wrong UI stack.
|
|
22
22
|
|
|
@@ -7,7 +7,19 @@ Cabloy currently supports two related but distinct editions:
|
|
|
7
7
|
- **Cabloy Basic**
|
|
8
8
|
- **Cabloy Start**
|
|
9
9
|
|
|
10
|
-
They share one Cabloy fullstack architecture, but they are
|
|
10
|
+
They share one Cabloy fullstack architecture, but they are composed and optimized differently.
|
|
11
|
+
|
|
12
|
+
## How the names fit together
|
|
13
|
+
|
|
14
|
+
| Name | Functional role |
|
|
15
|
+
| ------------ | --------------------------------------------------------------------------------- |
|
|
16
|
+
| Cabloy | The coordinated Node.js fullstack system. |
|
|
17
|
+
| Vona | Cabloy's backend framework and runtime layer. |
|
|
18
|
+
| Zova | Cabloy's frontend framework and application layer. |
|
|
19
|
+
| Cabloy Basic | The public reference and community edition baseline. |
|
|
20
|
+
| Cabloy Start | The public MIT-licensed business-system edition baseline in a sibling repository. |
|
|
21
|
+
|
|
22
|
+
Vona and Zova answer the architectural-layer question. Cabloy Basic and Cabloy Start answer the complete-edition-baseline question: both use the shared Cabloy architecture, but their UI, frontend flavors, modules, SSR baselines, project assets, generated outputs, root scripts, and onboarding paths can differ.
|
|
11
23
|
|
|
12
24
|
If you need a recommendation path, start with [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start).
|
|
13
25
|
|
|
@@ -26,7 +38,7 @@ Use this page as the main editions hub, then choose the path that matches your t
|
|
|
26
38
|
|
|
27
39
|
### Selection path
|
|
28
40
|
|
|
29
|
-
Start here when the task is about choosing the right edition baseline or understanding
|
|
41
|
+
Start here when the task is about choosing the right edition baseline or understanding their differences:
|
|
30
42
|
|
|
31
43
|
- [Choosing Basic vs Start](/editions/choosing-between-basic-and-start)
|
|
32
44
|
- [Cabloy Basic](/editions/cabloy-basic)
|
|
@@ -44,17 +56,17 @@ Use this path when the task is about repo-aware automation, flavor assumptions,
|
|
|
44
56
|
|
|
45
57
|
Both editions are built around the same core direction:
|
|
46
58
|
|
|
47
|
-
- **Vona** as the backend framework
|
|
48
|
-
- **Zova** as the frontend framework
|
|
59
|
+
- **Vona** as the backend framework and runtime layer
|
|
60
|
+
- **Zova** as the frontend framework and application layer
|
|
49
61
|
- suite-based modules across the stack
|
|
50
62
|
- root-level `npm run vona` and `npm run zova` entrypoints
|
|
51
63
|
- CLI-backed workflows for generation, refactoring, metadata, and verification
|
|
52
64
|
|
|
53
|
-
This means the editions are related fullstack baselines, not unrelated products.
|
|
65
|
+
This means the editions are related fullstack baselines, not unrelated products or alternatives to Vona and Zova.
|
|
54
66
|
|
|
55
67
|
## What "Basic" means
|
|
56
68
|
|
|
57
|
-
Cabloy Basic is the public
|
|
69
|
+
Cabloy Basic is the public reference and community edition of Cabloy.
|
|
58
70
|
|
|
59
71
|
- this public repository is marked with `__CABLOY_BASIC__`
|
|
60
72
|
- projects created with `npm create cabloy` follow the Cabloy Basic route
|
|
@@ -64,14 +76,13 @@ Cabloy Basic is the open-source community edition and is optimized for public re
|
|
|
64
76
|
|
|
65
77
|
## What "Start" means
|
|
66
78
|
|
|
67
|
-
Cabloy Start is the
|
|
79
|
+
Cabloy Start is the public MIT-licensed edition maintained in its own repository.
|
|
68
80
|
|
|
69
|
-
- the
|
|
70
|
-
- users
|
|
71
|
-
-
|
|
72
|
-
- Start uses its own edition-specific flavors, SSR site baselines, and project assets for that edition
|
|
81
|
+
- the public repository is marked with `__CABLOY_START__`
|
|
82
|
+
- users clone the public repository source directly, then run `npm run init`
|
|
83
|
+
- Start uses its own edition-specific flavors, SSR site baselines, and project assets
|
|
73
84
|
|
|
74
|
-
Cabloy Start is optimized as a
|
|
85
|
+
Cabloy Start is optimized as a business-system baseline for more complex systems while staying on the same Cabloy fullstack direction.
|
|
75
86
|
|
|
76
87
|
## Architecture layering
|
|
77
88
|
|
|
@@ -105,7 +116,8 @@ The editions intentionally diverge in several surfaces:
|
|
|
105
116
|
- frontend flavor names
|
|
106
117
|
- suite and module composition
|
|
107
118
|
- admin/web SSR site baselines
|
|
108
|
-
-
|
|
119
|
+
- separate-repository structure and edition-specific project assets
|
|
120
|
+
- generated outputs and root scripts
|
|
109
121
|
- rules, skills, and docs used for AI vibe coding
|
|
110
122
|
|
|
111
123
|
For example:
|
|
@@ -134,5 +146,5 @@ Write shared explanations once. Split or annotate only when a workflow changes b
|
|
|
134
146
|
- UI library assumptions
|
|
135
147
|
- frontend flavor names
|
|
136
148
|
- different modules or assets
|
|
137
|
-
-
|
|
149
|
+
- repository and initialization model
|
|
138
150
|
- edition-specific scripts, generated outputs, or AI workflow guidance
|
|
@@ -28,7 +28,7 @@ That flexibility matters directly for Cabloy’s edition model:
|
|
|
28
28
|
|
|
29
29
|
- **Shared frontend engineering layer**: both editions follow the same Zova-centered frontend direction, with Vue, Vite, Quasar tooling, and related libraries
|
|
30
30
|
- **Cabloy Basic UI layer**: current public docs and examples align with DaisyUI + Tailwind CSS
|
|
31
|
-
- **Cabloy Start UI layer**: the
|
|
31
|
+
- **Cabloy Start UI layer**: the public MIT-licensed edition aligns with Vuetify-oriented frontend workflows and may use different module composition and SSR site baselines
|
|
32
32
|
|
|
33
33
|
So docs and skills must separate shared Zova principles from edition-specific UI assumptions.
|
|
34
34
|
|
|
@@ -137,6 +137,6 @@ Frontend work is where Cabloy Basic and Cabloy Start differ most clearly.
|
|
|
137
137
|
|
|
138
138
|
- **Shared frontend engineering layer**: both editions follow the same Zova-centered frontend direction, with Vue, Vite, Quasar tooling, and related libraries.
|
|
139
139
|
- **Cabloy Basic UI layer**: current public docs and examples align with DaisyUI + Tailwind CSS.
|
|
140
|
-
- **Cabloy Start UI layer**: the
|
|
140
|
+
- **Cabloy Start UI layer**: the public MIT-licensed edition aligns with Vuetify and may use different frontend modules, SSR site baselines, and project assets.
|
|
141
141
|
|
|
142
142
|
Because of this, automation and docs should always detect the active edition before recommending page-level, component-level, or UI-library-specific work.
|
|
@@ -84,7 +84,7 @@ For the complete tag vocabulary, managed-runner argument boundaries, and externa
|
|
|
84
84
|
|
|
85
85
|
## Cabloy Start root wrappers
|
|
86
86
|
|
|
87
|
-
Cabloy Start is the licensed
|
|
87
|
+
Cabloy Start is the public MIT-licensed edition. Its default root wrappers use the `cabloyStartAdmin` and `cabloyStartWeb` flavors:
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
90
|
npm run dev:zova:admin
|
|
@@ -160,7 +160,7 @@ cd zova && npm run build:rest:cabloyBasicAdmin
|
|
|
160
160
|
|
|
161
161
|
## Cabloy Start
|
|
162
162
|
|
|
163
|
-
The
|
|
163
|
+
The separate public Cabloy Start repository supports Start-specific flavors:
|
|
164
164
|
|
|
165
165
|
- `cabloyStartAdmin`
|
|
166
166
|
- `cabloyStartWeb`
|
|
@@ -124,7 +124,7 @@ For a public route, the default response header depends on whether the URL ident
|
|
|
124
124
|
| missing or false `meta.locale` | `Cache-Control: no-cache, no-store, must-revalidate` | Not stored |
|
|
125
125
|
| `session` profile | `Cache-Control: private, no-store` | Not stored |
|
|
126
126
|
|
|
127
|
-
For Cabloy Start, verify the effective Web and Admin values in the
|
|
127
|
+
For Cabloy Start, verify the effective Web and Admin values in the active Start repository before creating the Cloudflare rule. The rule design remains the same: preserve and follow the origin `Cache-Control` response instead of replacing it.
|
|
128
128
|
|
|
129
129
|
A route can override the flavor default through SSR route metadata. An explicit public `meta.ssrProfileOptions.responseCache` policy remains authoritative; the Cloudflare rule follows the resulting response contract and does not replace it.
|
|
130
130
|
|