cabloy 5.1.51 → 5.1.53
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/.claude/skills/cabloy-contract-loop/SKILL.md +1 -1
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +11 -1
- package/.claude/skills/cabloy-workflow/SKILL.md +8 -4
- package/.claude/skills/cabloy-workflow/references/edition-detection.md +3 -2
- package/.github/workflows/docs-pages.yml +2 -0
- package/CHANGELOG.md +42 -0
- package/CLAUDE.md +7 -4
- package/README.md +36 -21
- package/cabloy-docs/.vitepress/config.mjs +171 -44
- package/cabloy-docs/ai/class-placement-rule.md +1 -0
- package/cabloy-docs/ai/cli-for-agents.md +1 -1
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +1 -0
- package/cabloy-docs/ai/edition-consistency-checklist.md +150 -0
- package/cabloy-docs/ai/edition-detection.md +3 -3
- package/cabloy-docs/ai/global-bean-lookup.md +1 -0
- package/cabloy-docs/ai/introduction.md +47 -3
- package/cabloy-docs/ai/repo-guidance.md +2 -2
- package/cabloy-docs/ai/rules-and-config.md +1 -1
- package/cabloy-docs/ai/skills.md +2 -0
- package/cabloy-docs/ai/verification.md +1 -0
- package/cabloy-docs/ai/virtual-decorator-guidance.md +206 -0
- package/cabloy-docs/backend/introduction.md +2 -2
- package/cabloy-docs/backend/logger-guide.md +1 -1
- package/cabloy-docs/backend/quickstart.md +3 -3
- package/cabloy-docs/editions/cabloy-basic.md +4 -3
- package/cabloy-docs/editions/cabloy-start.md +34 -3
- package/cabloy-docs/editions/choosing-between-basic-and-start.md +84 -0
- package/cabloy-docs/editions/overview.md +114 -20
- package/cabloy-docs/frontend/css-in-js-guide.md +1 -1
- package/cabloy-docs/frontend/environment-config-guide.md +28 -0
- package/cabloy-docs/frontend/foundation.md +3 -2
- package/cabloy-docs/frontend/introduction.md +73 -4
- package/cabloy-docs/frontend/navigation-guards-guide.md +1 -1
- package/cabloy-docs/frontend/quickstart.md +4 -2
- package/cabloy-docs/frontend/scripts.md +2 -2
- package/cabloy-docs/frontend/ssr-env.md +23 -0
- package/cabloy-docs/frontend/theme-guide.md +140 -7
- package/cabloy-docs/fullstack/cli.md +118 -0
- package/cabloy-docs/fullstack/comparison-with-other-frameworks.md +117 -0
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +3 -2
- package/cabloy-docs/fullstack/introduction.md +84 -34
- package/cabloy-docs/fullstack/quickstart.md +7 -4
- package/cabloy-docs/fullstack/vona-zova-integration.md +2 -2
- package/cabloy-docs/fullstack/vscode-extensions.md +126 -0
- package/cabloy-docs/index.md +39 -40
- package/cabloy-docs/reference/frontend-directory-structure.md +125 -0
- package/cabloy-docs/reference/glossary.md +2 -2
- package/cabloy-docs/reference/introduction.md +47 -0
- package/cabloy-docs/reference/package-map.md +2 -0
- package/cabloy-docs/reference/repo-scripts.md +5 -3
- package/package.json +1 -1
- package/vona/README.md +1 -1
- package/vona/pnpm-lock.yaml +383 -38
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/.metadata/index.ts +49 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/controller/memoryDiag.ts +97 -0
- package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
- package/zova/README.md +1 -1
- package/zova/package.original.json +4 -4
- package/zova/packages-cli/cli/package.json +2 -2
- package/zova/packages-cli/cli-set-front/package.json +2 -2
- package/zova/packages-cli/cli-set-front/src/lib/bean/cli.tools.metadata.ts +1 -1
- package/zova/packages-cli/cli-set-front/src/lib/bean/toolsMetadata/generateConfig.ts +2 -12
- package/zova/packages-utils/zova-jsx/package.json +2 -2
- package/zova/packages-utils/zova-vite/package.json +2 -2
- package/zova/packages-utils/zova-vite/templates/app/controller.tsx_ +3 -3
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +2 -2
- package/zova/packages-zova/zova-core/src/bean/beanContainer.ts +3 -3
- package/zova/packages-zova/zova-core/src/bean/beanControllerPageBase.ts +1 -0
- package/zova/packages-zova/zova-core/src/core/component/module.ts +16 -16
- package/zova/packages-zova/zova-core/src/core/context/component.ts +35 -3
- package/zova/packages-zova/zova-core/src/core/context/util.ts +15 -11
- package/zova/packages-zova/zova-core/src/core/sys/config.ts +1 -1
- package/zova/pnpm-lock.yaml +1607 -1690
- package/zova/src/front/config/config/config.ts +1 -1
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/index.ts +11 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/page/toolMinimal.ts +9 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolMinimal/controller.tsx +11 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/routes.ts +10 -0
- package/zova/src/suite/a-devui/modules/devui-adapter/src/bean/meta.themeHandler.ts +1 -0
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-base/src/service/routerGuards.ts +1 -1
- package/zova/src/suite/a-home/modules/home-base/src/service/ssrLayout.ts +1 -0
- package/zova/src/suite/a-home/modules/home-layoutadmin/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-layoutweb/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +2 -2
- package/zova/src/suite/a-home/modules/home-login/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-passport/src/model/passport.ts +2 -2
- package/zova/src/suite/cabloy-basic/modules/basic-captcha/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-form/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-table/src/.metadata/locales.ts +0 -15
- package/zova/src/suite-vendor/a-zova/modules/a-interceptor/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-interceptor/src/bean/interceptor.jwt.ts +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-model/src/service/storage.ts +4 -5
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/monkey.ts +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +36 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +8 -2
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +3 -0
- package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/src/service/ssrHandler.ts +70 -29
- package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-style/src/bean/bean.theme.ts +6 -3
- package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-zod/src/.metadata/locales.ts +0 -15
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +9 -9
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Fullstack CLI
|
|
2
|
+
|
|
3
|
+
This guide explains the shared CLI workflow for Cabloy in the monorepo.
|
|
4
|
+
|
|
5
|
+
Use this page to understand the cross-stack mental model first, then go deeper into the backend, frontend, and reference pages as needed.
|
|
6
|
+
|
|
7
|
+
## Why the fullstack CLI matters
|
|
8
|
+
|
|
9
|
+
Cabloy treats many common tasks as framework workflows rather than ad hoc manual steps.
|
|
10
|
+
|
|
11
|
+
That matters across the full stack because:
|
|
12
|
+
|
|
13
|
+
- Vona and Zova already expose framework-aware generators and tooling
|
|
14
|
+
- the monorepo already exposes shared root scripts for development and verification
|
|
15
|
+
- backend and frontend work stay more consistent when contributors start from the existing command surface instead of inventing manual scaffolding
|
|
16
|
+
|
|
17
|
+
A practical default is: inspect the CLI first, run the matching workflow if it already exists, then make only the minimal follow-up edits the task actually needs.
|
|
18
|
+
|
|
19
|
+
## Shared repo entrypoints
|
|
20
|
+
|
|
21
|
+
In this repository, the two main CLI entrypoints are:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run vona
|
|
25
|
+
npm run zova
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Use them as the shared terminal-first entrypoints for framework-aware workflows.
|
|
29
|
+
|
|
30
|
+
At the same time, the repo root also exposes shared scripts for broader development tasks such as dev, build, test, and typecheck.
|
|
31
|
+
|
|
32
|
+
Use this distinction consistently:
|
|
33
|
+
|
|
34
|
+
- use the CLI when you are discovering commands, generating framework resources, running framework-specific tooling, or inspecting workflow families
|
|
35
|
+
- use root scripts when you are running broader repository workflows such as development, builds, or verification
|
|
36
|
+
|
|
37
|
+
For the broader Reference landing page, see [Reference Introduction](/reference/introduction). For the compact root-script lookup surface, see [Repo Scripts](/reference/repo-scripts).
|
|
38
|
+
|
|
39
|
+
## Shared discovery pattern
|
|
40
|
+
|
|
41
|
+
Vona and Zova follow the same discovery model.
|
|
42
|
+
|
|
43
|
+
### 1. List command groups and commands
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm run vona :
|
|
47
|
+
npm run zova :
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. Narrow to a command family
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm run vona :create
|
|
54
|
+
npm run zova :create
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 3. Inspect help for one command
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npm run vona :create:bean --help
|
|
61
|
+
npm run zova :create:component --help
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
This discovery pattern should be the default contributor workflow before creating files by hand.
|
|
65
|
+
|
|
66
|
+
## How to choose the right surface
|
|
67
|
+
|
|
68
|
+
A practical rule is:
|
|
69
|
+
|
|
70
|
+
- start with `npm run vona` when the task is backend-oriented
|
|
71
|
+
- start with `npm run zova` when the task is frontend-oriented
|
|
72
|
+
- start with root scripts when the task is about repo-wide development, build, or verification
|
|
73
|
+
|
|
74
|
+
In practice, that usually means:
|
|
75
|
+
|
|
76
|
+
- **Vona CLI** for backend generation and backend-specific tooling
|
|
77
|
+
- **Zova CLI** for frontend generation, refactors, and frontend-specific tooling
|
|
78
|
+
- **Root scripts** for broader runtime and verification flows
|
|
79
|
+
|
|
80
|
+
For side-specific depth, see:
|
|
81
|
+
|
|
82
|
+
- [Backend CLI](/backend/cli)
|
|
83
|
+
- [Frontend CLI](/frontend/cli)
|
|
84
|
+
- [CLI Reference](/reference/cli-reference)
|
|
85
|
+
|
|
86
|
+
## Scripts, CLI, and VS Code extensions
|
|
87
|
+
|
|
88
|
+
Use these three surfaces for different jobs:
|
|
89
|
+
|
|
90
|
+
| Surface | Best for | Typical examples |
|
|
91
|
+
| ------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
|
|
92
|
+
| Root scripts | Repo-wide development, build, and verification workflows | `npm run dev`, `npm run build`, `npm run test` |
|
|
93
|
+
| CLI | Framework-aware generation, refactors, initialization, and tooling | `npm run vona :create`, `npm run zova :refactor`, `npm run zova :openapi` |
|
|
94
|
+
| VS Code extensions | In-editor discovery of the same framework workflow families | Explorer right-click menus for `Create`, `Init`, `Refactor`, `Tools`, and related groups |
|
|
95
|
+
|
|
96
|
+
## CLI and VS Code extensions
|
|
97
|
+
|
|
98
|
+
The CLI is the authoritative workflow surface.
|
|
99
|
+
|
|
100
|
+
The VS Code extensions are the editor-side discovery layer for those same workflows.
|
|
101
|
+
|
|
102
|
+
A practical rule is:
|
|
103
|
+
|
|
104
|
+
- use the CLI when you want explicit, scriptable, reproducible execution
|
|
105
|
+
- use VS Code menus when you want faster in-editor discovery of the same workflow families
|
|
106
|
+
|
|
107
|
+
For the editor-side counterpart, see [VS Code Extensions](/fullstack/vscode-extensions).
|
|
108
|
+
|
|
109
|
+
## Recommended workflow rule
|
|
110
|
+
|
|
111
|
+
Before creating or refactoring framework-managed files by hand:
|
|
112
|
+
|
|
113
|
+
1. inspect the relevant CLI family
|
|
114
|
+
2. run the matching generator, initializer, refactor, or tooling workflow
|
|
115
|
+
3. inspect the generated or transformed result
|
|
116
|
+
4. apply only the minimal manual follow-up edits that are still necessary
|
|
117
|
+
|
|
118
|
+
This keeps fullstack work aligned with Cabloy conventions and reduces avoidable manual scaffolding.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Comparison with Other Frameworks
|
|
2
|
+
|
|
3
|
+
This page shows how **Cabloy** differs from several common framework choices, so readers can quickly see where Cabloy stands out as a Node.js fullstack framework system and which strengths come from the fullstack system as a whole versus the backend layer provided by **Vona**.
|
|
4
|
+
|
|
5
|
+
## What is being compared
|
|
6
|
+
|
|
7
|
+
Cabloy is a **Node.js fullstack framework system**.
|
|
8
|
+
|
|
9
|
+
That means the comparison is not only about a backend runtime or only about a frontend stack. It is about how **Vona** on the backend and **Zova** on the frontend stay aligned through shared conventions, shared scripts, SSR-aware delivery modes, and cross-stack generation workflows.
|
|
10
|
+
|
|
11
|
+
For the broader Cabloy model, start with these pages:
|
|
12
|
+
|
|
13
|
+
- [Fullstack Introduction](/fullstack/introduction)
|
|
14
|
+
- [Vona + Zova Integration](/fullstack/vona-zova-integration)
|
|
15
|
+
- [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
|
|
16
|
+
- [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
|
|
17
|
+
|
|
18
|
+
## Comparison lens
|
|
19
|
+
|
|
20
|
+
The sections below use the same comparison lens each time:
|
|
21
|
+
|
|
22
|
+
- **System center** — what the framework treats as the main architectural center
|
|
23
|
+
- **Backend model** — how much backend structure and infrastructure the framework provides by default
|
|
24
|
+
- **Frontend and admin model** — how the UI side is expected to evolve
|
|
25
|
+
- **Cross-stack workflow** — how backend/frontend contracts and generation workflows stay aligned
|
|
26
|
+
- **Best fit** — the kind of team or project the framework fits most naturally
|
|
27
|
+
|
|
28
|
+
## Cabloy vs Next.js
|
|
29
|
+
|
|
30
|
+
| Perspective | Cabloy | Next.js |
|
|
31
|
+
| ------------------------ | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
32
|
+
| System center | One framework system with Vona on the backend and Zova on the frontend | Frontend-centric fullstack framework |
|
|
33
|
+
| Backend model | Dedicated backend framework with its own runtime, contracts, infrastructure, and CLI workflows | Backend capabilities are typically centered around the web app runtime |
|
|
34
|
+
| Frontend and admin model | Shared conventions across SSR, SPA, Web, and Admin applications | Strong fit for React-based web application delivery |
|
|
35
|
+
| Cross-stack workflow | Explicit backend OpenAPI output, frontend SDK generation, and frontend metadata feedback loops | Usually chosen per project or ecosystem tooling |
|
|
36
|
+
| 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 |
|
|
37
|
+
|
|
38
|
+
Cabloy and Next.js both target fullstack application development, but they organize the stack differently.
|
|
39
|
+
|
|
40
|
+
Cabloy keeps the backend and frontend as **separate but coordinated framework layers**. That makes it a strong fit when a team wants one framework system with a dedicated backend layer and a dedicated frontend layer, without stitching together unrelated tools by hand.
|
|
41
|
+
|
|
42
|
+
Representative Cabloy strengths in this comparison include:
|
|
43
|
+
|
|
44
|
+
- a clear backend/frontend collaboration model rather than a single frontend-centered runtime
|
|
45
|
+
- explicit contract workflows from backend OpenAPI output to frontend SDK generation
|
|
46
|
+
- frontend-generated metadata that can flow back into backend-side tooling
|
|
47
|
+
- shared delivery conventions for SSR, SPA, Web, and Admin applications
|
|
48
|
+
|
|
49
|
+
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.
|
|
50
|
+
|
|
51
|
+
## Cabloy vs NestJS
|
|
52
|
+
|
|
53
|
+
| Perspective | Cabloy | NestJS |
|
|
54
|
+
| ------------------------ | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
|
55
|
+
| System center | Fullstack system | Backend framework |
|
|
56
|
+
| Backend model | Vona provides backend runtime, contracts, infrastructure, and CLI workflows | NestJS focuses on backend application structure |
|
|
57
|
+
| Frontend and admin model | Frontend collaboration is built into the broader Cabloy system through Zova and shared docs/workflows | Usually paired with a separate frontend choice |
|
|
58
|
+
| Cross-stack workflow | Backend contracts can feed frontend SDK generation inside the same framework system | Typically assembled from separate backend and frontend tooling choices |
|
|
59
|
+
| Best fit | Teams that want backend strength inside a shared fullstack system | Teams that want a backend-first framework and will choose the frontend stack separately |
|
|
60
|
+
|
|
61
|
+
The most important difference here is **scope**.
|
|
62
|
+
|
|
63
|
+
NestJS is primarily a backend framework. Cabloy is a **fullstack framework system**. So this comparison is not only “backend versus backend.” It is also “backend-first framework” versus “backend + frontend framework system with a shared collaboration model.”
|
|
64
|
+
|
|
65
|
+
Within Cabloy, the backend-specific capabilities come from **Vona**. That is where backend-oriented strengths such as these belong:
|
|
66
|
+
|
|
67
|
+
- unified validation and OpenAPI-oriented schema workflows
|
|
68
|
+
- DTO inference and generation workflows
|
|
69
|
+
- built-in multi-tenant, multi-database, and multi-datasource capabilities
|
|
70
|
+
- broader infrastructure features such as queues, broadcast, schedule, and redlock
|
|
71
|
+
- AOP-oriented backend programming capabilities
|
|
72
|
+
|
|
73
|
+
If a team only needs a backend framework and wants to choose the frontend stack separately, NestJS remains a natural option. If a team wants those backend capabilities to live inside a **shared fullstack system** with Zova, SSR-aware delivery modes, and contract-loop workflows, Cabloy is the better fit.
|
|
74
|
+
|
|
75
|
+
## Cabloy vs Django Admin
|
|
76
|
+
|
|
77
|
+
| Perspective | Cabloy | Django Admin |
|
|
78
|
+
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
79
|
+
| System center | Typed Node.js fullstack framework system | Python server-centered admin framework experience |
|
|
80
|
+
| Backend model | Dedicated backend runtime and infrastructure through Vona | Django backend conventions centered on the admin stack |
|
|
81
|
+
| Frontend and admin model | Modern frontend layer through Zova with SSR, SPA, Web, and Admin delivery modes | Admin experience is centered on server-rendered templates and built-in admin conventions |
|
|
82
|
+
| Cross-stack workflow | Backend and frontend stay aligned through generated contracts, metadata, and shared workflows | The default model is more tightly centered on the server-side admin stack |
|
|
83
|
+
| Best fit | Teams that want rapid admin development in Node.js without giving up typed frontend flexibility and richer UI interaction | Teams that want a fast server-centered admin path in the Python ecosystem |
|
|
84
|
+
|
|
85
|
+
This comparison is worth keeping even though the language ecosystems are different.
|
|
86
|
+
|
|
87
|
+
In the Python ecosystem, **Django Admin** has long been one of the strongest choices for rapidly building CRUD-oriented admin systems. In the Node.js ecosystem, there has historically been no equally established framework that combines rapid admin development, full backend infrastructure, and a modern fullstack architecture in the same way.
|
|
88
|
+
|
|
89
|
+
Cabloy is designed to fill that gap in the Node.js ecosystem.
|
|
90
|
+
|
|
91
|
+
That is why this comparison matters: it is not only comparing features, but also explaining Cabloy’s **ecosystem role**. For teams that want Django-Admin-like development speed for admin systems but want to stay in Node.js, Cabloy aims to provide that missing fullstack option.
|
|
92
|
+
|
|
93
|
+
At the same time, Cabloy does not stop at reproducing the server-centered admin model. With Vona on the backend and Zova on the frontend, Cabloy gives teams:
|
|
94
|
+
|
|
95
|
+
- a typed modern frontend layer instead of relying only on server-rendered templates
|
|
96
|
+
- richer interaction patterns for Admin and Web applications
|
|
97
|
+
- a smoother path for deeper customization as business systems become more complex
|
|
98
|
+
- a development experience that stays closer to modern Node.js fullstack workflows
|
|
99
|
+
|
|
100
|
+
So although Django Admin remains a benchmark for rapid admin development, Cabloy aims to offer a stronger long-term fit for teams that want both **rapid CRUD-oriented admin delivery** and a more modern fullstack development and interaction model inside Node.js.
|
|
101
|
+
|
|
102
|
+
For Cabloy’s frontend/runtime side of this comparison, see:
|
|
103
|
+
|
|
104
|
+
- [Frontend SSR Overview](/frontend/ssr-overview)
|
|
105
|
+
- [Editions Overview](/editions/overview)
|
|
106
|
+
|
|
107
|
+
## How to read these comparisons
|
|
108
|
+
|
|
109
|
+
These comparisons are most useful when your decision depends on questions like:
|
|
110
|
+
|
|
111
|
+
- do you want one coordinated framework system instead of stitching backend and frontend frameworks together?
|
|
112
|
+
- do you need a stronger dedicated backend layer inside a fullstack architecture?
|
|
113
|
+
- do you want explicit contract-loop workflows between backend and frontend?
|
|
114
|
+
- do you need shared conventions across SSR, SPA, Web, and Admin delivery modes?
|
|
115
|
+
- do you want Django-Admin-like rapid admin development inside the Node.js ecosystem, but with a more modern frontend and interaction model?
|
|
116
|
+
|
|
117
|
+
If those questions matter, Cabloy’s value is not just one isolated feature. It is the way **Vona**, **Zova**, shared scripts, and cross-stack workflows stay aligned as one framework system.
|
|
@@ -22,10 +22,11 @@ Both editions share the same broad collaboration loop:
|
|
|
22
22
|
|
|
23
23
|
The most important differences show up in:
|
|
24
24
|
|
|
25
|
-
- frontend UI
|
|
25
|
+
- frontend UI layer assumptions
|
|
26
26
|
- frontend flavor names
|
|
27
27
|
- frontend module composition
|
|
28
|
-
-
|
|
28
|
+
- admin/web SSR site baselines
|
|
29
|
+
- edition-specific private value-add content and project assets in Cabloy Start
|
|
29
30
|
- potentially different generated output paths or integration details
|
|
30
31
|
|
|
31
32
|
## Cabloy Basic
|
|
@@ -1,6 +1,57 @@
|
|
|
1
1
|
# Fullstack Introduction
|
|
2
2
|
|
|
3
|
-
Cabloy is a fullstack framework
|
|
3
|
+
Cabloy is a Node.js fullstack framework for AI vibe coding.
|
|
4
|
+
|
|
5
|
+
Use one fullstack framework instead of stitching together separate backend and frontend stacks.
|
|
6
|
+
|
|
7
|
+
With Vona, Zova, suite-based modules, and CLI-first workflows, Cabloy turns common scaffolding, metadata, refactors, and verification into explicit commands for faster, more accurate AI vibe coding.
|
|
8
|
+
|
|
9
|
+
## What Cabloy emphasizes
|
|
10
|
+
|
|
11
|
+
- **One framework system** — build backend and frontend in one fullstack architecture
|
|
12
|
+
- **Vona + Zova** — use aligned backend and frontend frameworks for code sharing, workflow reuse, and cross-stack consistency
|
|
13
|
+
- **Suite-based modular system** — organize capabilities as suites and modules so services, features, metadata, and tooling evolve in composable units
|
|
14
|
+
- **Multiple delivery modes** — deliver SSR, SPA, Web, and Admin applications with shared conventions across the stack
|
|
15
|
+
- **CLI-first workflows for AI vibe coding** — turn common scaffolding, metadata, refactors, and verification into explicit commands for faster, more accurate AI vibe coding
|
|
16
|
+
- **Monorepo-native development** — keep framework source, docs, and tooling aligned in one monorepo workflow
|
|
17
|
+
|
|
18
|
+
## How to approach fullstack work
|
|
19
|
+
|
|
20
|
+
For contributor and automation workflows in this repository, prefer this order:
|
|
21
|
+
|
|
22
|
+
1. inspect the root `package.json` and shared monorepo scripts first
|
|
23
|
+
2. inspect `npm run vona`, `npm run zova`, and the shared fullstack CLI workflow before inventing custom steps
|
|
24
|
+
3. detect the active edition before making UI-sensitive or flavor-sensitive assumptions
|
|
25
|
+
4. explain shared cross-stack concepts once, then isolate edition-specific notes only where the editions intentionally diverge
|
|
26
|
+
|
|
27
|
+
## Fullstack reading paths
|
|
28
|
+
|
|
29
|
+
Use this page as the main fullstack hub, then choose the path that matches your task.
|
|
30
|
+
|
|
31
|
+
### Getting started path
|
|
32
|
+
|
|
33
|
+
Start here when you want the shortest route to a working monorepo mental model:
|
|
34
|
+
|
|
35
|
+
- [Quickstart](/fullstack/quickstart)
|
|
36
|
+
- [CLI](/fullstack/cli)
|
|
37
|
+
- [VS Code Extensions](/fullstack/vscode-extensions)
|
|
38
|
+
|
|
39
|
+
### Architecture and integration path
|
|
40
|
+
|
|
41
|
+
Use this path when the task is about how backend and frontend stay aligned inside one framework system:
|
|
42
|
+
|
|
43
|
+
- [Comparison with Other Frameworks](/fullstack/comparison-with-other-frameworks)
|
|
44
|
+
- [Vona + Zova Integration](/fullstack/vona-zova-integration)
|
|
45
|
+
- [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
|
|
46
|
+
- [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
|
|
47
|
+
|
|
48
|
+
### Edition-aware collaboration path
|
|
49
|
+
|
|
50
|
+
Use this path when the task depends on edition boundaries, UI assumptions, or cross-repo delivery differences:
|
|
51
|
+
|
|
52
|
+
- [Edition Collaboration Differences](/fullstack/edition-collaboration-differences)
|
|
53
|
+
- [Editions Overview](/editions/overview)
|
|
54
|
+
- [Choosing Basic vs Start](/editions/choosing-between-basic-and-start)
|
|
4
55
|
|
|
5
56
|
## Shared architecture
|
|
6
57
|
|
|
@@ -8,62 +59,61 @@ Cabloy is a fullstack framework built around a single source tree where backend
|
|
|
8
59
|
- **Zova** provides the frontend framework capabilities.
|
|
9
60
|
- The root repository coordinates the two through shared scripts, shared terminology, and a shared release story.
|
|
10
61
|
|
|
11
|
-
|
|
62
|
+
This combination keeps backend and frontend development close enough for code sharing, workflow reuse, and AI vibe coding workflows.
|
|
12
63
|
|
|
13
|
-
|
|
14
|
-
- `npm run zova`
|
|
15
|
-
- `npm run dev`
|
|
16
|
-
- `npm run build`
|
|
17
|
-
- `npm run test`
|
|
18
|
-
- `npm run tsc`
|
|
64
|
+
## How the fullstack system stays connected
|
|
19
65
|
|
|
20
|
-
|
|
66
|
+
At the repository level, shared scripts, shared terminology, and CLI-first workflows keep Vona and Zova aligned as one framework system.
|
|
21
67
|
|
|
22
|
-
|
|
68
|
+
For the shared terminal-first workflow model, see [Fullstack CLI](/fullstack/cli).
|
|
23
69
|
|
|
24
|
-
|
|
70
|
+
## Why the monorepo matters
|
|
71
|
+
|
|
72
|
+
The monorepo makes it possible to keep backend and frontend concepts, tooling, and generated outputs aligned from source rather than memory, for example:
|
|
25
73
|
|
|
26
74
|
- how frontend routes and components are reflected back into backend type hints
|
|
27
75
|
- how backend OpenAPI and DTO output feeds frontend SDK generation
|
|
28
|
-
- how
|
|
29
|
-
- how Vona and Zova CLI
|
|
76
|
+
- how common concepts can be documented once before edition-specific notes branch out
|
|
77
|
+
- how Vona and Zova CLI capabilities can be reused instead of rebuilding scaffolding by hand
|
|
30
78
|
|
|
31
79
|
## Technology Stack
|
|
32
80
|
|
|
33
81
|
### General
|
|
34
82
|
|
|
35
|
-
| Package | Version
|
|
36
|
-
| ---------- |
|
|
37
|
-
| TypeScript | `^5.9.3`
|
|
38
|
-
| Zod | `^4.3.6`
|
|
83
|
+
| Package | Version |
|
|
84
|
+
| ---------- | -------- |
|
|
85
|
+
| TypeScript | `^5.9.3` |
|
|
86
|
+
| Zod | `^4.3.6` |
|
|
39
87
|
|
|
40
88
|
### Backend (Vona)
|
|
41
89
|
|
|
42
|
-
| Package
|
|
43
|
-
|
|
|
44
|
-
| Koa
|
|
45
|
-
| Knex
|
|
46
|
-
| Redis Client (`ioredis`)
|
|
47
|
-
| SQLite Driver (`better-sqlite3`)
|
|
90
|
+
| Package | Version |
|
|
91
|
+
| -------------------------------- | --------- |
|
|
92
|
+
| Koa | `^3.2.0` |
|
|
93
|
+
| Knex | `^3.2.9` |
|
|
94
|
+
| Redis Client (`ioredis`) | `^5.10.1` |
|
|
95
|
+
| SQLite Driver (`better-sqlite3`) | `^12.9.0` |
|
|
48
96
|
|
|
49
97
|
### Frontend (Zova)
|
|
50
98
|
|
|
51
|
-
| Package
|
|
52
|
-
|
|
|
53
|
-
| Vue
|
|
54
|
-
| Vite
|
|
55
|
-
| Quasar
|
|
56
|
-
| TanStack Query
|
|
57
|
-
| TanStack Form
|
|
58
|
-
| TanStack Table
|
|
99
|
+
| Package | Version |
|
|
100
|
+
| -------------- | ----------- |
|
|
101
|
+
| Vue | `^3.5.32` |
|
|
102
|
+
| Vite | `^8.0.14` |
|
|
103
|
+
| Quasar | `^2.19.3` |
|
|
104
|
+
| TanStack Query | `^5.100.10` |
|
|
105
|
+
| TanStack Form | `^1.32.0` |
|
|
106
|
+
| TanStack Table | `^8.21.3` |
|
|
59
107
|
|
|
60
108
|
### Edition-specific UI Stack
|
|
61
109
|
|
|
62
110
|
- **Cabloy Basic**: DaisyUI + Tailwind CSS
|
|
63
111
|
- **Cabloy Start**: Vuetify
|
|
64
112
|
|
|
65
|
-
##
|
|
113
|
+
## Edition impact
|
|
114
|
+
|
|
115
|
+
Most framework concepts are shared across Cabloy Basic and Cabloy Start because both editions follow the same Cabloy fullstack core. The documentation prefers a common-first explanation, then adds edition-specific notes only where the editions intentionally diverge.
|
|
66
116
|
|
|
67
|
-
|
|
117
|
+
Across editions, the frontend engineering layer stays mostly shared through Zova, Vue, Vite, Quasar tooling, and related libraries. The edition-specific UI layer then diverges between DaisyUI + Tailwind CSS for Cabloy Basic and Vuetify for Cabloy Start.
|
|
68
118
|
|
|
69
|
-
Use the [Editions Overview](/editions/overview) page whenever a task depends on UI library, module composition, or
|
|
119
|
+
Use the [Editions Overview](/editions/overview) page whenever a task depends on UI library assumptions, flavor names, module composition, SSR site baselines, distribution boundaries, or AI workflow guidance.
|
|
@@ -24,7 +24,7 @@ Before creating a new Cabloy project, make sure your environment has:
|
|
|
24
24
|
npm create cabloy
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
The generated project already includes `CLAUDE.md` and the `.claude/` workspace assets. Open this project in Claude Code and start coding immediately with project-specific guidance.
|
|
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
29
|
## 3. Start the backend
|
|
30
30
|
|
|
@@ -46,10 +46,13 @@ npm run dev:zova:web # http://localhost:9000/
|
|
|
46
46
|
|
|
47
47
|
### Cabloy Start
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
Cabloy Start is the private commercial edition. Instead of `npm create cabloy`, purchase access to the licensed private repository, clone that source 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.
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
For the full Start onboarding details, including the access and initialization flow, read [Cabloy Start](/editions/cabloy-start).
|
|
52
52
|
|
|
53
|
+
If you are not sure which edition you are using or which one to choose, read:
|
|
54
|
+
|
|
55
|
+
- [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start)
|
|
53
56
|
- [Edition Detection](/editions/detection)
|
|
54
57
|
- [Cabloy Basic](/editions/cabloy-basic)
|
|
55
58
|
- [Cabloy Start](/editions/cabloy-start)
|
|
@@ -64,7 +67,7 @@ npm run upgrade
|
|
|
64
67
|
|
|
65
68
|
If you are contributing to framework-aware workflows or using Cabloy CLI generation directly, prefer CLI-backed generation over manual scaffolding.
|
|
66
69
|
|
|
67
|
-
|
|
70
|
+
Read [Fullstack CLI](/fullstack/cli) for the shared cross-stack workflow model, then start with:
|
|
68
71
|
|
|
69
72
|
```bash
|
|
70
73
|
npm run vona :create
|
|
@@ -49,14 +49,14 @@ cd zova && npm run build:rest:cabloyBasicWeb
|
|
|
49
49
|
|
|
50
50
|
## Cabloy Start
|
|
51
51
|
|
|
52
|
-
Cabloy Start is a sibling
|
|
52
|
+
Cabloy Start is the private commercial edition. It lives in a licensed sibling repository rather than a subdirectory here, but the same integration idea applies.
|
|
53
53
|
|
|
54
54
|
Its root script surface uses Start-specific flavors such as:
|
|
55
55
|
|
|
56
56
|
- `cabloyStartAdmin`
|
|
57
57
|
- `cabloyStartWeb`
|
|
58
58
|
|
|
59
|
-
Because Start
|
|
59
|
+
Because Start can differ in UI layer, module composition, SSR site baselines, and project assets, do not reuse Basic integration examples without first confirming:
|
|
60
60
|
|
|
61
61
|
1. the `__CABLOY_START__` marker
|
|
62
62
|
2. the Start repo’s `package.json`
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# VS Code Extensions
|
|
2
|
+
|
|
3
|
+
Cabloy provides two official VS Code extensions so you can discover and run framework workflows directly from the editor.
|
|
4
|
+
|
|
5
|
+
These extensions surface Vona and Zova CLI capabilities through Explorer right-click menus. They make common workflows easier to discover and reduce the mental burden of remembering command names, while still keeping the CLI as the authoritative workflow surface.
|
|
6
|
+
|
|
7
|
+
## Official extensions
|
|
8
|
+
|
|
9
|
+
- [Vona - Official](https://marketplace.visualstudio.com/items?itemName=cabloy.vona-vscode)
|
|
10
|
+
- [Zova - Official](https://marketplace.visualstudio.com/items?itemName=cabloy.zova-vscode)
|
|
11
|
+
|
|
12
|
+
## Why the extensions matter
|
|
13
|
+
|
|
14
|
+
In Cabloy, many common tasks are already modeled as framework workflows instead of ad hoc manual edits.
|
|
15
|
+
|
|
16
|
+
Typical examples include:
|
|
17
|
+
|
|
18
|
+
- creating suites and modules
|
|
19
|
+
- generating backend or frontend skeletons
|
|
20
|
+
- initializing config, locale, constants, assets, and related support files
|
|
21
|
+
- refreshing metadata or other generated output
|
|
22
|
+
- running focused refactor workflows when the framework already provides one
|
|
23
|
+
|
|
24
|
+
The VS Code extensions make those workflows easier to discover inside the editor.
|
|
25
|
+
|
|
26
|
+
## Shared interaction model
|
|
27
|
+
|
|
28
|
+
The two extensions follow the same basic model:
|
|
29
|
+
|
|
30
|
+
- open a Cabloy workspace in VS Code
|
|
31
|
+
- right-click the relevant folder or file in the Explorer
|
|
32
|
+
- choose the matching Vona or Zova menu group
|
|
33
|
+
- run the workflow from the menu instead of typing the full command first
|
|
34
|
+
|
|
35
|
+
This keeps editor-side discovery aligned with CLI execution.
|
|
36
|
+
|
|
37
|
+
## Shared menu groups
|
|
38
|
+
|
|
39
|
+
Both extensions organize their workflows around the same top-level menu vocabulary:
|
|
40
|
+
|
|
41
|
+
- `Create`
|
|
42
|
+
- `Aspect`
|
|
43
|
+
- `Bean`
|
|
44
|
+
- `Meta`
|
|
45
|
+
- `Init`
|
|
46
|
+
- `Refactor`
|
|
47
|
+
- `Tools`
|
|
48
|
+
|
|
49
|
+
This shared structure helps you move between backend and frontend work without learning two unrelated menu systems.
|
|
50
|
+
|
|
51
|
+
## Menus and CLI are two entrypoints to the same workflow
|
|
52
|
+
|
|
53
|
+
A practical rule is:
|
|
54
|
+
|
|
55
|
+
- use VS Code menus when you want fast discovery and editor ergonomics
|
|
56
|
+
- use the CLI when you want explicit, scriptable, reproducible execution
|
|
57
|
+
|
|
58
|
+
In this repository, the shared CLI entrypoints are:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm run vona
|
|
62
|
+
npm run zova
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
To inspect the available command families directly, start with:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm run vona :
|
|
69
|
+
npm run zova :
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
These are not competing workflow systems. They are two entrypoints to the same underlying framework workflows.
|
|
73
|
+
|
|
74
|
+
For the shared terminal-first workflow model behind these menus, see [Fullstack CLI](/fullstack/cli).
|
|
75
|
+
|
|
76
|
+
## What Vona emphasizes
|
|
77
|
+
|
|
78
|
+
The Vona extension is backend-oriented.
|
|
79
|
+
|
|
80
|
+
Its menus focus on workflows such as:
|
|
81
|
+
|
|
82
|
+
- backend code generation for suites, modules, DTOs, entities, models, services, controllers, and tests
|
|
83
|
+
- backend aspect and bean creation
|
|
84
|
+
- metadata and initialization workflows
|
|
85
|
+
- backend runtime-oriented capabilities such as SSR, socket, queue, schedule, cache, auth, and related infrastructure beans
|
|
86
|
+
- tooling workflows such as metadata generation and CRUD generation
|
|
87
|
+
|
|
88
|
+
This makes the extension especially useful when you are working inside the backend framework tree and want to stay aligned with Vona conventions.
|
|
89
|
+
|
|
90
|
+
## What Zova emphasizes
|
|
91
|
+
|
|
92
|
+
The Zova extension is frontend-oriented.
|
|
93
|
+
|
|
94
|
+
Its menus focus on workflows such as:
|
|
95
|
+
|
|
96
|
+
- frontend generation for suites, modules, pages, components, APIs, models, services, and mocks
|
|
97
|
+
- page- and component-oriented bean workflows
|
|
98
|
+
- initialization workflows for frontend config, assets, locale, icons, and support files
|
|
99
|
+
- focused refactors for pages and components
|
|
100
|
+
- OpenAPI-related tooling and metadata generation
|
|
101
|
+
|
|
102
|
+
This makes the extension especially useful when you are building or evolving frontend structure and want to reuse the framework’s existing generators and refactors.
|
|
103
|
+
|
|
104
|
+
## One important difference
|
|
105
|
+
|
|
106
|
+
Although both extensions expose the same top-level menu vocabulary, their workflow depth is not identical.
|
|
107
|
+
|
|
108
|
+
In practice:
|
|
109
|
+
|
|
110
|
+
- Zova provides substantial refactor coverage for page and component workflows
|
|
111
|
+
- Vona keeps the same overall menu shape, but its current value is concentrated more heavily in backend generation, bean, meta, init, and tooling workflows
|
|
112
|
+
|
|
113
|
+
So when you are reshaping frontend structure, the Zova extension is more likely to surface direct refactor actions.
|
|
114
|
+
|
|
115
|
+
## Recommended workflow rule
|
|
116
|
+
|
|
117
|
+
Before creating files by hand, first check whether Vona or Zova already provides the generator, initializer, metadata task, or refactor you need.
|
|
118
|
+
|
|
119
|
+
A good default workflow is:
|
|
120
|
+
|
|
121
|
+
1. discover the workflow from the VS Code menu or the CLI command list
|
|
122
|
+
2. run the matching framework command
|
|
123
|
+
3. inspect the generated or transformed result
|
|
124
|
+
4. apply only the minimal follow-up edits that are still necessary
|
|
125
|
+
|
|
126
|
+
This keeps fullstack work aligned with Cabloy conventions and reduces avoidable manual scaffolding.
|