cabloy 5.1.50 → 5.1.51
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-backend-scaffold/SKILL.md +207 -0
- package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +29 -0
- package/.claude/skills/cabloy-backend-scaffold/references/backend-thread-map.md +52 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +39 -0
- package/.claude/skills/cabloy-contract-loop/SKILL.md +201 -0
- package/.claude/skills/cabloy-contract-loop/evals/evals.json +29 -0
- package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +47 -0
- package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -0
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +230 -0
- package/.claude/skills/cabloy-frontend-scaffold/evals/evals.json +35 -0
- package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +41 -0
- package/.claude/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +54 -0
- package/.claude/skills/cabloy-workflow/SKILL.md +288 -0
- package/.claude/skills/cabloy-workflow/evals/evals.json +35 -0
- package/.claude/skills/cabloy-workflow/references/cli-strategy.md +39 -0
- package/.claude/skills/cabloy-workflow/references/edition-detection.md +29 -0
- package/.github/workflows/docs-pages.yml +54 -0
- package/.gitignore +1 -0
- package/CHANGELOG.md +29 -0
- package/CLAUDE.md +59 -0
- package/README.md +137 -0
- package/cabloy-docs/.vitepress/config.mjs +222 -0
- package/cabloy-docs/.vitepress/public/CNAME +1 -0
- package/cabloy-docs/.vitepress/theme/custom.css +64 -0
- package/cabloy-docs/.vitepress/theme/edition-badges.md +5 -0
- package/cabloy-docs/.vitepress/theme/index.js +5 -0
- package/cabloy-docs/ai/class-placement-rule.md +138 -0
- package/cabloy-docs/ai/cli-for-agents.md +56 -0
- package/cabloy-docs/ai/cli-to-skill-map.md +165 -0
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +167 -0
- package/cabloy-docs/ai/edition-detection.md +30 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
- package/cabloy-docs/ai/global-bean-lookup.md +157 -0
- package/cabloy-docs/ai/introduction.md +62 -0
- package/cabloy-docs/ai/playbook-backend-module.md +111 -0
- package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
- package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
- package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
- package/cabloy-docs/ai/repo-guidance.md +58 -0
- package/cabloy-docs/ai/rules-and-config.md +29 -0
- package/cabloy-docs/ai/skills.md +35 -0
- package/cabloy-docs/ai/verification.md +30 -0
- package/cabloy-docs/backend/aop-overview.md +128 -0
- package/cabloy-docs/backend/auth-guide.md +151 -0
- package/cabloy-docs/backend/backend-essentials.md +128 -0
- package/cabloy-docs/backend/broadcast-guide.md +138 -0
- package/cabloy-docs/backend/cache-guide.md +70 -0
- package/cabloy-docs/backend/captcha-guide.md +162 -0
- package/cabloy-docs/backend/cli.md +173 -0
- package/cabloy-docs/backend/config-guide.md +249 -0
- package/cabloy-docs/backend/controller-aop-guide.md +270 -0
- package/cabloy-docs/backend/controller-guide.md +347 -0
- package/cabloy-docs/backend/crud-workflow.md +118 -0
- package/cabloy-docs/backend/dto-guide.md +161 -0
- package/cabloy-docs/backend/dto-infer-generation.md +153 -0
- package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
- package/cabloy-docs/backend/election-guide.md +141 -0
- package/cabloy-docs/backend/entity-guide.md +150 -0
- package/cabloy-docs/backend/error-guide.md +108 -0
- package/cabloy-docs/backend/event-guide.md +183 -0
- package/cabloy-docs/backend/external-aop-guide.md +149 -0
- package/cabloy-docs/backend/field-indexes.md +79 -0
- package/cabloy-docs/backend/foundation.md +281 -0
- package/cabloy-docs/backend/i18n-guide.md +211 -0
- package/cabloy-docs/backend/internal-aop-guide.md +181 -0
- package/cabloy-docs/backend/introduction.md +95 -0
- package/cabloy-docs/backend/jwt-guide.md +276 -0
- package/cabloy-docs/backend/logger-guide.md +223 -0
- package/cabloy-docs/backend/mail-guide.md +189 -0
- package/cabloy-docs/backend/menu-guide.md +80 -0
- package/cabloy-docs/backend/migration-and-changes.md +192 -0
- package/cabloy-docs/backend/model-guide.md +274 -0
- package/cabloy-docs/backend/multi-database-datasource.md +171 -0
- package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
- package/cabloy-docs/backend/openapi-guide.md +118 -0
- package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
- package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
- package/cabloy-docs/backend/orm-guide.md +109 -0
- package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
- package/cabloy-docs/backend/orm-select-guide.md +243 -0
- package/cabloy-docs/backend/queue-guide.md +271 -0
- package/cabloy-docs/backend/quickstart.md +141 -0
- package/cabloy-docs/backend/redis-guide.md +70 -0
- package/cabloy-docs/backend/redlock-guide.md +60 -0
- package/cabloy-docs/backend/relations-guide.md +250 -0
- package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
- package/cabloy-docs/backend/schedule-guide.md +81 -0
- package/cabloy-docs/backend/scripts.md +116 -0
- package/cabloy-docs/backend/serialization-guide.md +192 -0
- package/cabloy-docs/backend/service-guide.md +166 -0
- package/cabloy-docs/backend/sharding-guide.md +49 -0
- package/cabloy-docs/backend/startup-guide.md +326 -0
- package/cabloy-docs/backend/transaction-guide.md +82 -0
- package/cabloy-docs/backend/unit-testing.md +209 -0
- package/cabloy-docs/backend/upload-guide.md +160 -0
- package/cabloy-docs/backend/user-access-guide.md +157 -0
- package/cabloy-docs/backend/validation-guide.md +80 -0
- package/cabloy-docs/backend/worker-guide.md +59 -0
- package/cabloy-docs/editions/cabloy-basic.md +25 -0
- package/cabloy-docs/editions/cabloy-start.md +24 -0
- package/cabloy-docs/editions/detection.md +31 -0
- package/cabloy-docs/editions/overview.md +44 -0
- package/cabloy-docs/frontend/api-guide.md +93 -0
- package/cabloy-docs/frontend/api-schema-guide.md +43 -0
- package/cabloy-docs/frontend/app-startup-guide.md +185 -0
- package/cabloy-docs/frontend/cli.md +78 -0
- package/cabloy-docs/frontend/component-guide.md +105 -0
- package/cabloy-docs/frontend/component-props-guide.md +97 -0
- package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
- package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
- package/cabloy-docs/frontend/design-principles.md +55 -0
- package/cabloy-docs/frontend/environment-config-guide.md +250 -0
- package/cabloy-docs/frontend/foundation.md +57 -0
- package/cabloy-docs/frontend/generic-component-guide.md +35 -0
- package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
- package/cabloy-docs/frontend/introduction.md +32 -0
- package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
- package/cabloy-docs/frontend/mock-guide.md +109 -0
- package/cabloy-docs/frontend/model-architecture.md +87 -0
- package/cabloy-docs/frontend/model-state-guide.md +70 -0
- package/cabloy-docs/frontend/module-scope.md +168 -0
- package/cabloy-docs/frontend/modules-and-suites.md +179 -0
- package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
- package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
- package/cabloy-docs/frontend/page-guide.md +223 -0
- package/cabloy-docs/frontend/page-params-guide.md +87 -0
- package/cabloy-docs/frontend/page-query-guide.md +96 -0
- package/cabloy-docs/frontend/page-route-guide.md +147 -0
- package/cabloy-docs/frontend/quickstart.md +201 -0
- package/cabloy-docs/frontend/route-alias-guide.md +61 -0
- package/cabloy-docs/frontend/scripts.md +86 -0
- package/cabloy-docs/frontend/sdk-guide.md +45 -0
- package/cabloy-docs/frontend/server-data.md +74 -0
- package/cabloy-docs/frontend/ssr-client-only.md +40 -0
- package/cabloy-docs/frontend/ssr-env.md +51 -0
- package/cabloy-docs/frontend/ssr-init-data.md +46 -0
- package/cabloy-docs/frontend/ssr-overview.md +48 -0
- package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
- package/cabloy-docs/frontend/system-startup-guide.md +186 -0
- package/cabloy-docs/frontend/theme-guide.md +154 -0
- package/cabloy-docs/frontend/zod-guide.md +161 -0
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +61 -0
- package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
- package/cabloy-docs/fullstack/introduction.md +69 -0
- package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
- package/cabloy-docs/fullstack/quickstart.md +86 -0
- package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
- package/cabloy-docs/index.md +73 -0
- package/cabloy-docs/package.json +16 -0
- package/cabloy-docs/pnpm-lock.yaml +1607 -0
- package/cabloy-docs/reference/backend-directory-structure.md +88 -0
- package/cabloy-docs/reference/cli-reference.md +49 -0
- package/cabloy-docs/reference/glossary.md +38 -0
- package/cabloy-docs/reference/package-map.md +105 -0
- package/cabloy-docs/reference/repo-scripts.md +36 -0
- package/package.json +4 -1
- package/scripts/init.ts +12 -0
- package/scripts/upgrade.ts +31 -3
- package/vona/README.md +3 -3
- package/vona/README.zh-CN.md +4 -4
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
- package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
- package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
- package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
- package/vona/src/suite-vendor/a-captcha/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
- package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.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/bean/cacheRedis.authToken.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/README.md +4 -4
- package/zova/README.zh-CN.md +4 -4
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Fullstack Introduction
|
|
2
|
+
|
|
3
|
+
Cabloy is a fullstack framework built around a single source tree where backend and frontend development stay close enough for code sharing, workflow reuse, and AI-assisted implementation.
|
|
4
|
+
|
|
5
|
+
## Shared architecture
|
|
6
|
+
|
|
7
|
+
- **Vona** provides the backend framework capabilities.
|
|
8
|
+
- **Zova** provides the frontend framework capabilities.
|
|
9
|
+
- The root repository coordinates the two through shared scripts, shared terminology, and a shared release story.
|
|
10
|
+
|
|
11
|
+
In the current monorepo root, the main command entrypoints are:
|
|
12
|
+
|
|
13
|
+
- `npm run vona`
|
|
14
|
+
- `npm run zova`
|
|
15
|
+
- `npm run dev`
|
|
16
|
+
- `npm run build`
|
|
17
|
+
- `npm run test`
|
|
18
|
+
- `npm run tsc`
|
|
19
|
+
|
|
20
|
+
These are defined in the root `package.json` and should be the first place an agent or contributor checks before inventing a custom workflow.
|
|
21
|
+
|
|
22
|
+
## Why the monorepo matters for workflow selection
|
|
23
|
+
|
|
24
|
+
The monorepo makes it possible to answer cross-stack questions from source rather than memory, for example:
|
|
25
|
+
|
|
26
|
+
- how frontend routes and components are reflected back into backend type hints
|
|
27
|
+
- how backend OpenAPI and DTO output feeds frontend SDK generation
|
|
28
|
+
- how edition-specific scripts differ between Cabloy Basic and Cabloy Start
|
|
29
|
+
- how Vona and Zova CLI commands can be reused instead of writing scaffolding manually
|
|
30
|
+
|
|
31
|
+
## Technology Stack
|
|
32
|
+
|
|
33
|
+
### General
|
|
34
|
+
|
|
35
|
+
| Package | Version |
|
|
36
|
+
| ---------- | --------- |
|
|
37
|
+
| TypeScript | `^5.9.3` |
|
|
38
|
+
| Zod | `^4.3.6` |
|
|
39
|
+
|
|
40
|
+
### Backend (Vona)
|
|
41
|
+
|
|
42
|
+
| Package | Version |
|
|
43
|
+
| ---------------------------------- | --------- |
|
|
44
|
+
| Koa | `^3.2.0` |
|
|
45
|
+
| Knex | `^3.2.9` |
|
|
46
|
+
| Redis Client (`ioredis`) | `^5.10.1` |
|
|
47
|
+
| SQLite Driver (`better-sqlite3`) | `^12.9.0` |
|
|
48
|
+
|
|
49
|
+
### Frontend (Zova)
|
|
50
|
+
|
|
51
|
+
| Package | Version |
|
|
52
|
+
| ---------------- | ----------- |
|
|
53
|
+
| Vue | `^3.5.32` |
|
|
54
|
+
| Vite | `^8.0.14` |
|
|
55
|
+
| Quasar | `^2.19.3` |
|
|
56
|
+
| TanStack Query | `^5.100.10` |
|
|
57
|
+
| TanStack Form | `^1.32.0` |
|
|
58
|
+
| TanStack Table | `^8.21.3` |
|
|
59
|
+
|
|
60
|
+
### Edition-specific UI Stack
|
|
61
|
+
|
|
62
|
+
- **Cabloy Basic**: DaisyUI + Tailwind CSS
|
|
63
|
+
- **Cabloy Start**: Vuetify
|
|
64
|
+
|
|
65
|
+
## Common-first, edition-aware
|
|
66
|
+
|
|
67
|
+
Most framework concepts are shared across Cabloy Basic and Cabloy Start. The new documentation prefers a common-first explanation, then adds edition-specific notes only where the repos intentionally diverge.
|
|
68
|
+
|
|
69
|
+
Use the [Editions Overview](/editions/overview) page whenever a task depends on UI library, module composition, or private-value project boundaries.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Backend OpenAPI to Frontend SDK
|
|
2
|
+
|
|
3
|
+
This page turns one of Cabloy’s most important fullstack collaboration paths into an explicit guide.
|
|
4
|
+
|
|
5
|
+
## Why this path matters
|
|
6
|
+
|
|
7
|
+
Cabloy’s fullstack productivity depends heavily on a contract loop:
|
|
8
|
+
|
|
9
|
+
1. Vona emits backend API metadata through Swagger/OpenAPI
|
|
10
|
+
2. Zova consumes that metadata to generate frontend SDKs and schema-aware helpers
|
|
11
|
+
3. frontend pages, models, and services build on those generated contracts instead of re-declaring everything manually
|
|
12
|
+
|
|
13
|
+
This is one of the strongest AI-leverage paths in the repo because it reduces duplicated type work and keeps backend/frontend coordination closer to source truth.
|
|
14
|
+
|
|
15
|
+
## The contract loop in practical terms
|
|
16
|
+
|
|
17
|
+
A useful split is:
|
|
18
|
+
|
|
19
|
+
- backend docs define the authoring side of the contract
|
|
20
|
+
- fullstack docs define the bridge from emitted contract to generated SDK
|
|
21
|
+
- frontend docs define the consumption side of the generated contract
|
|
22
|
+
|
|
23
|
+
That means this page is the fullstack contract-bridge page, not the backend authoring page and not the frontend usage page.
|
|
24
|
+
|
|
25
|
+
## Backend side: Vona emits the contract
|
|
26
|
+
|
|
27
|
+
On the backend side, OpenAPI metadata is driven by:
|
|
28
|
+
|
|
29
|
+
- controller argument and return contracts
|
|
30
|
+
- DTO and entity field definitions
|
|
31
|
+
- validation rules and `v` helpers
|
|
32
|
+
- `a-openapi` configuration
|
|
33
|
+
|
|
34
|
+
For the deeper backend perspective, see:
|
|
35
|
+
|
|
36
|
+
- [Controller Guide](/backend/controller-guide)
|
|
37
|
+
- [OpenAPI Guide](/backend/openapi-guide)
|
|
38
|
+
- [Validation Guide](/backend/validation-guide)
|
|
39
|
+
- [DTO Infer and Generation](/backend/dto-infer-generation)
|
|
40
|
+
|
|
41
|
+
## Frontend side: Zova consumes the contract
|
|
42
|
+
|
|
43
|
+
On the frontend side, the generated-contract path typically includes:
|
|
44
|
+
|
|
45
|
+
- OpenAPI configuration
|
|
46
|
+
- SDK generation
|
|
47
|
+
- API services or schema-driven helpers based on the generated output
|
|
48
|
+
|
|
49
|
+
For the deeper frontend perspective, see:
|
|
50
|
+
|
|
51
|
+
- [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
|
|
52
|
+
- [Server Data](/frontend/server-data)
|
|
53
|
+
- [API Guide](/frontend/api-guide)
|
|
54
|
+
- [API Schema Guide](/frontend/api-schema-guide)
|
|
55
|
+
- [SDK Guide](/frontend/sdk-guide)
|
|
56
|
+
|
|
57
|
+
## Cabloy Basic workflow
|
|
58
|
+
|
|
59
|
+
In the current public monorepo, Basic-specific Zova flavors include:
|
|
60
|
+
|
|
61
|
+
- `cabloyBasicAdmin`
|
|
62
|
+
- `cabloyBasicWeb`
|
|
63
|
+
|
|
64
|
+
Representative frontend-side contract-generation commands include:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm run zova :openapi:config demo-student
|
|
68
|
+
npm run zova :openapi:generate demo-student
|
|
69
|
+
cd zova && npm run build:rest:cabloyBasicAdmin
|
|
70
|
+
cd zova && npm run build:rest:cabloyBasicWeb
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
A practical contract-loop sequence is:
|
|
74
|
+
|
|
75
|
+
1. author or change the backend contract
|
|
76
|
+
2. emit or inspect backend OpenAPI output
|
|
77
|
+
3. configure frontend module ownership if needed
|
|
78
|
+
4. generate module-level OpenAPI SDK output
|
|
79
|
+
5. run the rest build for the active Basic flavor when needed
|
|
80
|
+
6. consume the generated contract from frontend code instead of re-declaring it manually
|
|
81
|
+
|
|
82
|
+
A practical responsibility split is:
|
|
83
|
+
|
|
84
|
+
- project-level OpenAPI config decides where the backend Swagger/OpenAPI source comes from
|
|
85
|
+
- module-level OpenAPI config decides which generated contract slice belongs to which frontend module
|
|
86
|
+
|
|
87
|
+
A practical regeneration rule is:
|
|
88
|
+
|
|
89
|
+
- if the backend contract changed, prefer regenerating the SDK/rest layer before hand-editing frontend request code
|
|
90
|
+
|
|
91
|
+
## Cabloy Start workflow
|
|
92
|
+
|
|
93
|
+
In the sibling private Start repo, the same collaboration idea applies, but the frontend flavor names differ.
|
|
94
|
+
|
|
95
|
+
Representative Start-specific flavors include:
|
|
96
|
+
|
|
97
|
+
- `cabloyStartAdmin`
|
|
98
|
+
- `cabloyStartWeb`
|
|
99
|
+
|
|
100
|
+
Before documenting or automating this path for Start, confirm:
|
|
101
|
+
|
|
102
|
+
1. the `__CABLOY_START__` marker
|
|
103
|
+
2. the Start repo’s `package.json`
|
|
104
|
+
3. the exact frontend flavor names and generated output paths
|
|
105
|
+
|
|
106
|
+
## Implementation checks for backend-to-frontend contract changes
|
|
107
|
+
|
|
108
|
+
When changing a backend API contract, ask:
|
|
109
|
+
|
|
110
|
+
1. does OpenAPI output change?
|
|
111
|
+
2. does the frontend SDK or schema layer need regeneration?
|
|
112
|
+
3. is the active edition Basic or Start?
|
|
113
|
+
4. is the right next step to regenerate contracts instead of hand-editing frontend request code?
|
|
114
|
+
5. is the current task on the backend authoring side, the bridge step, or the frontend consumption side?
|
|
115
|
+
|
|
116
|
+
That keeps the backend/frontend contract loop coherent.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Fullstack Quickstart
|
|
2
|
+
|
|
3
|
+
This guide explains the fastest way to start a Cabloy fullstack project.
|
|
4
|
+
|
|
5
|
+
## 1. Prerequisites
|
|
6
|
+
|
|
7
|
+
Before creating a new Cabloy project, make sure your environment has:
|
|
8
|
+
|
|
9
|
+
| Name | Version |
|
|
10
|
+
| ------------ | ----------- |
|
|
11
|
+
| `pnpm` | `>=10.19.0` |
|
|
12
|
+
| `Node.js` | `>=24.4.0` |
|
|
13
|
+
| `Redis` | `>=7.2.6` |
|
|
14
|
+
| `SQLite3` | `Built-in` |
|
|
15
|
+
| `MySQL` | `>=8` |
|
|
16
|
+
| `PostgreSQL` | `>=16` |
|
|
17
|
+
|
|
18
|
+
- `Redis`: powers queue, schedule, startup, broadcast, caching, two-layer cache, and redlock
|
|
19
|
+
- `SQLite3`: if you use `better-sqlite3`, set up `node-gyp` before installing dependencies
|
|
20
|
+
|
|
21
|
+
## 2. Create a new project
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm create cabloy
|
|
25
|
+
```
|
|
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.
|
|
28
|
+
|
|
29
|
+
## 3. Start the backend
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm run dev
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- Web: http://localhost:7102/
|
|
36
|
+
- Admin: http://localhost:7102/admin/
|
|
37
|
+
|
|
38
|
+
## 4. Start the frontend for your edition
|
|
39
|
+
|
|
40
|
+
### Cabloy Basic
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm run dev:zova:admin # http://localhost:9000/admin/
|
|
44
|
+
npm run dev:zova:web # http://localhost:9000/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Cabloy Start
|
|
48
|
+
|
|
49
|
+
Use the frontend commands provided by your project edition. Do not assume the Cabloy Basic flavor names apply to Cabloy Start.
|
|
50
|
+
|
|
51
|
+
If you are not sure which edition you are using, read:
|
|
52
|
+
|
|
53
|
+
- [Edition Detection](/editions/detection)
|
|
54
|
+
- [Cabloy Basic](/editions/cabloy-basic)
|
|
55
|
+
- [Cabloy Start](/editions/cabloy-start)
|
|
56
|
+
|
|
57
|
+
## 5. Upgrade an existing project
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npm run upgrade
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 6. Next steps for framework-aware development
|
|
64
|
+
|
|
65
|
+
If you are contributing to framework-aware workflows or using Cabloy CLI generation directly, prefer CLI-backed generation over manual scaffolding.
|
|
66
|
+
|
|
67
|
+
Instead of creating framework files by hand, start with:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm run vona :create
|
|
71
|
+
npm run zova :create
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Then narrow into the specific command family you need.
|
|
75
|
+
|
|
76
|
+
## 7. Shared verification commands for deeper workflow checks
|
|
77
|
+
|
|
78
|
+
If you are validating framework-aware changes or a broader workflow, use the shared project scripts before declaring a workflow correct:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npm run tsc
|
|
82
|
+
npm run test
|
|
83
|
+
npm run build
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Choose more targeted checks when only one area is affected, but treat these scripts as the shared reference surface.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Fullstack Vona + Zova Integration
|
|
2
|
+
|
|
3
|
+
This guide explains the current monorepo-native workflow for integrating Vona and Zova.
|
|
4
|
+
|
|
5
|
+
## Why the workflow looks different in the monorepo
|
|
6
|
+
|
|
7
|
+
Earlier standalone-repo workflows often described integrating Zova by cloning a separate repository and copying its built output into Vona manually.
|
|
8
|
+
|
|
9
|
+
That is not the preferred Cabloy workflow.
|
|
10
|
+
|
|
11
|
+
In the current monorepo:
|
|
12
|
+
|
|
13
|
+
- Vona and Zova already live in the same source tree
|
|
14
|
+
- the root repository already exposes shared scripts for both sides
|
|
15
|
+
- edition differences should be handled explicitly rather than through ad hoc path replacement
|
|
16
|
+
|
|
17
|
+
## Core integration model
|
|
18
|
+
|
|
19
|
+
Cabloy uses a frontend-backend separation architecture:
|
|
20
|
+
|
|
21
|
+
- Vona provides the backend runtime
|
|
22
|
+
- Zova provides the frontend application
|
|
23
|
+
- generated or built frontend output is consumed by the backend-side fullstack flow
|
|
24
|
+
- type sharing is coordinated through OpenAPI, generated SDKs, and frontend-generated route/component typing
|
|
25
|
+
|
|
26
|
+
## Cabloy Basic
|
|
27
|
+
|
|
28
|
+
In Cabloy Basic, the root repository already exposes these shared entrypoints:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run dev
|
|
32
|
+
npm run dev:zova:admin
|
|
33
|
+
npm run dev:zova:web
|
|
34
|
+
npm run build
|
|
35
|
+
npm run build:zova
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The relevant Zova flavors in this repository include:
|
|
39
|
+
|
|
40
|
+
- `cabloyBasicAdmin`
|
|
41
|
+
- `cabloyBasicWeb`
|
|
42
|
+
|
|
43
|
+
The frontend-side REST/type build flows include:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
cd zova && npm run build:rest:cabloyBasicAdmin
|
|
47
|
+
cd zova && npm run build:rest:cabloyBasicWeb
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Cabloy Start
|
|
51
|
+
|
|
52
|
+
Cabloy Start is a sibling private repository rather than a subdirectory here, but the same integration idea applies.
|
|
53
|
+
|
|
54
|
+
Its root script surface uses Start-specific flavors such as:
|
|
55
|
+
|
|
56
|
+
- `cabloyStartAdmin`
|
|
57
|
+
- `cabloyStartWeb`
|
|
58
|
+
|
|
59
|
+
Because Start differs in UI stack and module composition, do not reuse Basic integration examples without first confirming:
|
|
60
|
+
|
|
61
|
+
1. the `__CABLOY_START__` marker
|
|
62
|
+
2. the Start repo’s `package.json`
|
|
63
|
+
3. the exact Zova flavor names and generated output paths used there
|
|
64
|
+
|
|
65
|
+
## Recommended integration workflow
|
|
66
|
+
|
|
67
|
+
### 1. Detect the edition
|
|
68
|
+
|
|
69
|
+
- `__CABLOY_BASIC__` → use Basic examples from this repo
|
|
70
|
+
- `__CABLOY_START__` → verify the sibling Start repo scripts before using examples
|
|
71
|
+
|
|
72
|
+
### 2. Start from root scripts
|
|
73
|
+
|
|
74
|
+
Use the root `package.json` as the first workflow surface.
|
|
75
|
+
|
|
76
|
+
### 3. Use Zova build and REST generation deliberately
|
|
77
|
+
|
|
78
|
+
For frontend builds and type generation, inspect the relevant Zova flavor scripts instead of hardcoding copy paths or ad hoc integration steps.
|
|
79
|
+
|
|
80
|
+
### 4. Verify both sides together
|
|
81
|
+
|
|
82
|
+
For meaningful fullstack changes, verify:
|
|
83
|
+
|
|
84
|
+
- backend dev/build/test flow
|
|
85
|
+
- frontend dev/build/type generation flow
|
|
86
|
+
- the edition-specific flavor you actually targeted
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: home
|
|
3
|
+
|
|
4
|
+
hero:
|
|
5
|
+
name: 'Cabloy'
|
|
6
|
+
text: 'Unified fullstack framework documentation'
|
|
7
|
+
tagline: Build SSR, SPA, Web, and Admin applications with monorepo-native guidance for Cabloy, Vona, Zova, and AI-assisted development.
|
|
8
|
+
actions:
|
|
9
|
+
- theme: brand
|
|
10
|
+
text: Get Started
|
|
11
|
+
link: /fullstack/quickstart
|
|
12
|
+
- theme: alt
|
|
13
|
+
text: Editions
|
|
14
|
+
link: /editions/overview
|
|
15
|
+
- theme: alt
|
|
16
|
+
text: AI Development
|
|
17
|
+
link: /ai/introduction
|
|
18
|
+
|
|
19
|
+
features:
|
|
20
|
+
- title: Fullstack by design
|
|
21
|
+
details: Understand how Cabloy combines the Vona backend and the Zova frontend in one source tree so humans and AI agents can work from the same ground truth.
|
|
22
|
+
- title: Edition-aware workflows
|
|
23
|
+
details: Distinguish what is common across Cabloy Basic and Cabloy Start, and what changes because of UI library, module composition, or private value-add features.
|
|
24
|
+
- title: CLI-first automation
|
|
25
|
+
details: Reuse Vona and Zova CLI capabilities for scaffolding, refactoring, metadata, and verification instead of re-deriving framework conventions from scratch.
|
|
26
|
+
- title: AI-ready knowledge system
|
|
27
|
+
details: Connect public docs, internal architecture notes, Claude rules, and skills so AI-assisted development stays accurate, efficient, and maintainable.
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# Cabloy Documentation
|
|
31
|
+
|
|
32
|
+
This site is the new documentation home for the Cabloy monorepo.
|
|
33
|
+
|
|
34
|
+
It is designed around four practical goals:
|
|
35
|
+
|
|
36
|
+
1. explain the shared architecture across Cabloy, Vona, and Zova
|
|
37
|
+
2. document the real monorepo workflows used in current source code
|
|
38
|
+
3. distinguish Cabloy Basic and Cabloy Start clearly
|
|
39
|
+
4. provide durable guidance for AI-assisted development
|
|
40
|
+
|
|
41
|
+
## What is covered here
|
|
42
|
+
|
|
43
|
+
- **Fullstack**: monorepo setup, shared workflows, and cross-stack architecture
|
|
44
|
+
- **Backend (Vona)**: backend concepts, infrastructure, and CLI-backed workflows
|
|
45
|
+
- **Frontend (Zova)**: frontend concepts, SSR, UI-stack considerations, and CLI-backed workflows
|
|
46
|
+
- **Editions**: how Cabloy Basic and Cabloy Start relate and where they differ
|
|
47
|
+
- **AI Development**: how docs, skills, rules, commands, and internal engineering notes work together
|
|
48
|
+
- **Reference**: scripts, CLI command families, package layout, and terminology
|
|
49
|
+
|
|
50
|
+
## Documentation scope labels
|
|
51
|
+
|
|
52
|
+
Use these labels throughout the site:
|
|
53
|
+
|
|
54
|
+
<Badge type="tip" text="Common" /> applies to both Cabloy Basic and Cabloy Start.
|
|
55
|
+
|
|
56
|
+
<Badge type="info" text="Basic" /> applies only to Cabloy Basic.
|
|
57
|
+
|
|
58
|
+
<Badge type="warning" text="Start" /> applies only to Cabloy Start.
|
|
59
|
+
|
|
60
|
+
## First reading path
|
|
61
|
+
|
|
62
|
+
### For project users
|
|
63
|
+
|
|
64
|
+
1. [Fullstack Quickstart](/fullstack/quickstart)
|
|
65
|
+
2. [Editions Overview](/editions/overview)
|
|
66
|
+
3. [Fullstack Introduction](/fullstack/introduction)
|
|
67
|
+
|
|
68
|
+
### For framework contributors and AI workflows
|
|
69
|
+
|
|
70
|
+
1. [Fullstack Introduction](/fullstack/introduction)
|
|
71
|
+
2. [AI Development Introduction](/ai/introduction)
|
|
72
|
+
3. [Repo Scripts Reference](/reference/repo-scripts)
|
|
73
|
+
4. [Editions Overview](/editions/overview)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cabloy-docs",
|
|
3
|
+
"private": true,
|
|
4
|
+
"description": "Unified Cabloy monorepo docs",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "zhennann",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"docs:dev": "vitepress dev .",
|
|
10
|
+
"docs:build": "vitepress build .",
|
|
11
|
+
"docs:preview": "vitepress preview ."
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"vitepress": "^1.6.4"
|
|
15
|
+
}
|
|
16
|
+
}
|