cabloy 5.1.50 → 5.1.52

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.
Files changed (300) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +207 -0
  2. package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +29 -0
  3. package/.claude/skills/cabloy-backend-scaffold/references/backend-thread-map.md +52 -0
  4. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +39 -0
  5. package/.claude/skills/cabloy-contract-loop/SKILL.md +201 -0
  6. package/.claude/skills/cabloy-contract-loop/evals/evals.json +29 -0
  7. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +47 -0
  8. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -0
  9. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +230 -0
  10. package/.claude/skills/cabloy-frontend-scaffold/evals/evals.json +35 -0
  11. package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +41 -0
  12. package/.claude/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +54 -0
  13. package/.claude/skills/cabloy-workflow/SKILL.md +292 -0
  14. package/.claude/skills/cabloy-workflow/evals/evals.json +35 -0
  15. package/.claude/skills/cabloy-workflow/references/cli-strategy.md +39 -0
  16. package/.claude/skills/cabloy-workflow/references/edition-detection.md +30 -0
  17. package/.github/workflows/docs-pages.yml +56 -0
  18. package/.gitignore +1 -0
  19. package/CHANGELOG.md +54 -0
  20. package/CLAUDE.md +59 -0
  21. package/README.md +152 -0
  22. package/cabloy-docs/.vitepress/config.mjs +255 -0
  23. package/cabloy-docs/.vitepress/public/CNAME +1 -0
  24. package/cabloy-docs/.vitepress/theme/custom.css +64 -0
  25. package/cabloy-docs/.vitepress/theme/edition-badges.md +5 -0
  26. package/cabloy-docs/.vitepress/theme/index.js +5 -0
  27. package/cabloy-docs/ai/class-placement-rule.md +139 -0
  28. package/cabloy-docs/ai/cli-for-agents.md +56 -0
  29. package/cabloy-docs/ai/cli-to-skill-map.md +165 -0
  30. package/cabloy-docs/ai/docs-skills-rules-mapping.md +168 -0
  31. package/cabloy-docs/ai/edition-consistency-checklist.md +150 -0
  32. package/cabloy-docs/ai/edition-detection.md +30 -0
  33. package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
  34. package/cabloy-docs/ai/global-bean-lookup.md +158 -0
  35. package/cabloy-docs/ai/introduction.md +62 -0
  36. package/cabloy-docs/ai/playbook-backend-module.md +111 -0
  37. package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
  38. package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
  39. package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
  40. package/cabloy-docs/ai/repo-guidance.md +58 -0
  41. package/cabloy-docs/ai/rules-and-config.md +29 -0
  42. package/cabloy-docs/ai/skills.md +37 -0
  43. package/cabloy-docs/ai/verification.md +31 -0
  44. package/cabloy-docs/ai/virtual-decorator-guidance.md +206 -0
  45. package/cabloy-docs/backend/aop-overview.md +128 -0
  46. package/cabloy-docs/backend/auth-guide.md +151 -0
  47. package/cabloy-docs/backend/backend-essentials.md +128 -0
  48. package/cabloy-docs/backend/broadcast-guide.md +138 -0
  49. package/cabloy-docs/backend/cache-guide.md +70 -0
  50. package/cabloy-docs/backend/captcha-guide.md +162 -0
  51. package/cabloy-docs/backend/cli.md +173 -0
  52. package/cabloy-docs/backend/config-guide.md +249 -0
  53. package/cabloy-docs/backend/controller-aop-guide.md +270 -0
  54. package/cabloy-docs/backend/controller-guide.md +347 -0
  55. package/cabloy-docs/backend/crud-workflow.md +118 -0
  56. package/cabloy-docs/backend/dto-guide.md +161 -0
  57. package/cabloy-docs/backend/dto-infer-generation.md +153 -0
  58. package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
  59. package/cabloy-docs/backend/election-guide.md +141 -0
  60. package/cabloy-docs/backend/entity-guide.md +150 -0
  61. package/cabloy-docs/backend/error-guide.md +108 -0
  62. package/cabloy-docs/backend/event-guide.md +183 -0
  63. package/cabloy-docs/backend/external-aop-guide.md +149 -0
  64. package/cabloy-docs/backend/field-indexes.md +79 -0
  65. package/cabloy-docs/backend/foundation.md +281 -0
  66. package/cabloy-docs/backend/i18n-guide.md +211 -0
  67. package/cabloy-docs/backend/internal-aop-guide.md +181 -0
  68. package/cabloy-docs/backend/introduction.md +95 -0
  69. package/cabloy-docs/backend/jwt-guide.md +276 -0
  70. package/cabloy-docs/backend/logger-guide.md +223 -0
  71. package/cabloy-docs/backend/mail-guide.md +189 -0
  72. package/cabloy-docs/backend/menu-guide.md +80 -0
  73. package/cabloy-docs/backend/migration-and-changes.md +192 -0
  74. package/cabloy-docs/backend/model-guide.md +274 -0
  75. package/cabloy-docs/backend/multi-database-datasource.md +171 -0
  76. package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
  77. package/cabloy-docs/backend/openapi-guide.md +118 -0
  78. package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
  79. package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
  80. package/cabloy-docs/backend/orm-guide.md +109 -0
  81. package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
  82. package/cabloy-docs/backend/orm-select-guide.md +243 -0
  83. package/cabloy-docs/backend/queue-guide.md +271 -0
  84. package/cabloy-docs/backend/quickstart.md +141 -0
  85. package/cabloy-docs/backend/redis-guide.md +70 -0
  86. package/cabloy-docs/backend/redlock-guide.md +60 -0
  87. package/cabloy-docs/backend/relations-guide.md +250 -0
  88. package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
  89. package/cabloy-docs/backend/schedule-guide.md +81 -0
  90. package/cabloy-docs/backend/scripts.md +116 -0
  91. package/cabloy-docs/backend/serialization-guide.md +192 -0
  92. package/cabloy-docs/backend/service-guide.md +166 -0
  93. package/cabloy-docs/backend/sharding-guide.md +49 -0
  94. package/cabloy-docs/backend/startup-guide.md +326 -0
  95. package/cabloy-docs/backend/transaction-guide.md +82 -0
  96. package/cabloy-docs/backend/unit-testing.md +209 -0
  97. package/cabloy-docs/backend/upload-guide.md +160 -0
  98. package/cabloy-docs/backend/user-access-guide.md +157 -0
  99. package/cabloy-docs/backend/validation-guide.md +80 -0
  100. package/cabloy-docs/backend/worker-guide.md +59 -0
  101. package/cabloy-docs/editions/cabloy-basic.md +26 -0
  102. package/cabloy-docs/editions/cabloy-start.md +55 -0
  103. package/cabloy-docs/editions/choosing-between-basic-and-start.md +84 -0
  104. package/cabloy-docs/editions/detection.md +31 -0
  105. package/cabloy-docs/editions/overview.md +107 -0
  106. package/cabloy-docs/frontend/api-guide.md +93 -0
  107. package/cabloy-docs/frontend/api-schema-guide.md +43 -0
  108. package/cabloy-docs/frontend/app-startup-guide.md +185 -0
  109. package/cabloy-docs/frontend/cli.md +78 -0
  110. package/cabloy-docs/frontend/component-guide.md +105 -0
  111. package/cabloy-docs/frontend/component-props-guide.md +97 -0
  112. package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
  113. package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
  114. package/cabloy-docs/frontend/design-principles.md +55 -0
  115. package/cabloy-docs/frontend/environment-config-guide.md +250 -0
  116. package/cabloy-docs/frontend/foundation.md +58 -0
  117. package/cabloy-docs/frontend/generic-component-guide.md +35 -0
  118. package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
  119. package/cabloy-docs/frontend/introduction.md +33 -0
  120. package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
  121. package/cabloy-docs/frontend/mock-guide.md +109 -0
  122. package/cabloy-docs/frontend/model-architecture.md +87 -0
  123. package/cabloy-docs/frontend/model-state-guide.md +70 -0
  124. package/cabloy-docs/frontend/module-scope.md +168 -0
  125. package/cabloy-docs/frontend/modules-and-suites.md +179 -0
  126. package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
  127. package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
  128. package/cabloy-docs/frontend/page-guide.md +223 -0
  129. package/cabloy-docs/frontend/page-params-guide.md +87 -0
  130. package/cabloy-docs/frontend/page-query-guide.md +96 -0
  131. package/cabloy-docs/frontend/page-route-guide.md +147 -0
  132. package/cabloy-docs/frontend/quickstart.md +202 -0
  133. package/cabloy-docs/frontend/route-alias-guide.md +61 -0
  134. package/cabloy-docs/frontend/scripts.md +86 -0
  135. package/cabloy-docs/frontend/sdk-guide.md +45 -0
  136. package/cabloy-docs/frontend/server-data.md +74 -0
  137. package/cabloy-docs/frontend/ssr-client-only.md +40 -0
  138. package/cabloy-docs/frontend/ssr-env.md +51 -0
  139. package/cabloy-docs/frontend/ssr-init-data.md +46 -0
  140. package/cabloy-docs/frontend/ssr-overview.md +48 -0
  141. package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
  142. package/cabloy-docs/frontend/system-startup-guide.md +186 -0
  143. package/cabloy-docs/frontend/theme-guide.md +154 -0
  144. package/cabloy-docs/frontend/zod-guide.md +161 -0
  145. package/cabloy-docs/fullstack/cli.md +118 -0
  146. package/cabloy-docs/fullstack/comparison-with-other-frameworks.md +117 -0
  147. package/cabloy-docs/fullstack/edition-collaboration-differences.md +62 -0
  148. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
  149. package/cabloy-docs/fullstack/introduction.md +81 -0
  150. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
  151. package/cabloy-docs/fullstack/quickstart.md +89 -0
  152. package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
  153. package/cabloy-docs/fullstack/vscode-extensions.md +126 -0
  154. package/cabloy-docs/index.md +72 -0
  155. package/cabloy-docs/package.json +16 -0
  156. package/cabloy-docs/pnpm-lock.yaml +1607 -0
  157. package/cabloy-docs/reference/backend-directory-structure.md +88 -0
  158. package/cabloy-docs/reference/cli-reference.md +49 -0
  159. package/cabloy-docs/reference/glossary.md +38 -0
  160. package/cabloy-docs/reference/package-map.md +105 -0
  161. package/cabloy-docs/reference/repo-scripts.md +36 -0
  162. package/package.json +4 -1
  163. package/scripts/init.ts +12 -0
  164. package/scripts/upgrade.ts +31 -3
  165. package/vona/README.md +4 -4
  166. package/vona/README.zh-CN.md +4 -4
  167. package/vona/packages-vona/vona/package.json +1 -1
  168. package/vona/pnpm-lock.yaml +383 -38
  169. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
  170. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
  171. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
  172. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/.metadata/index.ts +49 -1
  173. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/controller/memoryDiag.ts +97 -0
  174. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  175. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
  176. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
  177. package/vona/src/suite-vendor/a-captcha/package.json +1 -1
  178. package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
  179. package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
  180. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  181. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  182. package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
  183. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
  184. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
  185. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
  186. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
  187. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
  188. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
  189. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
  190. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
  191. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
  192. package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  193. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  194. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
  195. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
  196. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
  197. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
  198. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
  199. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
  200. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
  201. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
  202. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
  203. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
  204. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
  205. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
  206. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
  207. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
  208. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
  209. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
  210. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
  211. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
  212. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
  213. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
  214. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
  215. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
  216. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
  217. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
  218. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
  219. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
  220. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
  221. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
  222. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
  223. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
  224. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
  225. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
  226. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
  227. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
  228. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
  229. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
  230. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
  231. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
  232. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
  233. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
  234. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
  235. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
  236. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
  237. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
  238. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
  239. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
  240. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
  241. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
  242. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
  243. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  244. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
  245. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
  246. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  247. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
  248. package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  249. package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
  250. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
  251. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
  252. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
  253. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
  254. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
  255. package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
  256. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
  257. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.ts +2 -2
  258. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
  259. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/cacheRedis.authToken.ts +2 -2
  260. package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
  261. package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
  262. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  263. package/zova/README.md +5 -5
  264. package/zova/README.zh-CN.md +4 -4
  265. package/zova/package.original.json +4 -4
  266. package/zova/packages-cli/cli/package.json +2 -2
  267. package/zova/packages-cli/cli-set-front/package.json +2 -2
  268. package/zova/packages-utils/zova-jsx/package.json +2 -2
  269. package/zova/packages-utils/zova-vite/package.json +2 -2
  270. package/zova/packages-utils/zova-vite/templates/app/controller.tsx_ +3 -3
  271. package/zova/packages-zova/zova/package.json +3 -3
  272. package/zova/packages-zova/zova-core/package.json +2 -2
  273. package/zova/packages-zova/zova-core/src/bean/beanContainer.ts +3 -3
  274. package/zova/packages-zova/zova-core/src/bean/beanControllerPageBase.ts +1 -0
  275. package/zova/packages-zova/zova-core/src/core/component/module.ts +16 -16
  276. package/zova/packages-zova/zova-core/src/core/context/component.ts +35 -3
  277. package/zova/packages-zova/zova-core/src/core/context/util.ts +15 -11
  278. package/zova/pnpm-lock.yaml +1596 -1679
  279. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/index.ts +11 -0
  280. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/page/toolMinimal.ts +9 -0
  281. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolMinimal/controller.tsx +11 -0
  282. package/zova/src/suite/a-demo/modules/demo-basic/src/routes.ts +10 -0
  283. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  284. package/zova/src/suite-vendor/a-zova/modules/a-model/src/service/storage.ts +4 -5
  285. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  286. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/monkey.ts +1 -1
  287. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  288. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +36 -1
  289. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +7 -2
  290. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +3 -0
  291. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +1 -1
  292. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/src/service/ssrHandler.ts +70 -29
  293. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  294. package/zova/src/suite-vendor/a-zova/package.json +6 -6
  295. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
  296. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
  297. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
  298. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
  299. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
  300. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
@@ -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.
@@ -0,0 +1,62 @@
1
+ # Edition Differences in Fullstack Collaboration
2
+
3
+ This page makes the Basic/Start differences in the collaboration loop explicit.
4
+
5
+ ## Why this page matters
6
+
7
+ Most Cabloy architecture can be explained once.
8
+
9
+ But the fullstack collaboration path becomes confusing if docs or AI systems silently reuse Cabloy Basic assumptions inside Cabloy Start workflows.
10
+
11
+ This page exists to keep those differences visible.
12
+
13
+ ## Shared collaboration model
14
+
15
+ Both editions share the same broad collaboration loop:
16
+
17
+ - Vona provides backend runtime and OpenAPI-facing contract output
18
+ - Zova provides frontend application structure and generated metadata
19
+ - root scripts and CLI commands coordinate build, generation, and verification
20
+
21
+ ## Where the editions diverge
22
+
23
+ The most important differences show up in:
24
+
25
+ - frontend UI layer assumptions
26
+ - frontend flavor names
27
+ - frontend module composition
28
+ - admin/web SSR site baselines
29
+ - private value-add content and project assets in Cabloy Start
30
+ - potentially different generated output paths or integration details
31
+
32
+ ## Cabloy Basic
33
+
34
+ In the current public monorepo, Basic examples commonly align with:
35
+
36
+ - DaisyUI + TailwindCSS oriented frontend assumptions
37
+ - Basic-specific Zova flavors such as `cabloyBasicAdmin` and `cabloyBasicWeb`
38
+
39
+ ## Cabloy Start
40
+
41
+ In the sibling private repo, Start examples commonly align with:
42
+
43
+ - Vuetify-oriented frontend assumptions
44
+ - Start-specific Zova flavors such as `cabloyStartAdmin` and `cabloyStartWeb`
45
+
46
+ ## Safe documentation and AI rule
47
+
48
+ When documenting or automating a fullstack collaboration flow:
49
+
50
+ 1. explain the shared model once
51
+ 2. detect the active edition
52
+ 3. branch only where the workflow actually diverges
53
+ 4. verify flavor names and generated output paths in the active repo
54
+
55
+ ## Practical implications for edition-aware workflow decisions
56
+
57
+ This rule prevents a common failure mode:
58
+
59
+ - the model understands the shared architecture correctly
60
+ - but gives the wrong operational example because it assumes the wrong edition
61
+
62
+ That is exactly the kind of mistake good fullstack docs should prevent.
@@ -0,0 +1,64 @@
1
+ # Frontend Metadata Back to Backend
2
+
3
+ This page documents the reverse direction of Cabloy’s fullstack collaboration loop: frontend-generated metadata that improves backend-side development and tooling.
4
+
5
+ ## Why this path matters
6
+
7
+ The fullstack collaboration loop in Cabloy is not one-way.
8
+
9
+ For the forward contract-bridge direction from backend OpenAPI to frontend consumption, also see [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
10
+
11
+ The backend does not only feed the frontend through OpenAPI. The frontend also generates information that can improve backend-side type hints and integration confidence.
12
+
13
+ This is one of the unusual strengths of the Cabloy monorepo model.
14
+
15
+ ## What the frontend can generate
16
+
17
+ The current script surface shows that Zova can generate metadata and type information for areas such as:
18
+
19
+ - routes
20
+ - components
21
+ - icons
22
+ - REST-related generated output
23
+
24
+ That generated information can then be consumed by backend-side fullstack workflows and developer tooling.
25
+
26
+ ## Why this is valuable
27
+
28
+ In a separated-repo world, this information is often harder to share, easier to stale, and more annoying for AI to rediscover.
29
+
30
+ In the monorepo, the frontend-generated metadata can stay close to:
31
+
32
+ - the frontend source that produced it
33
+ - the backend workflows that consume or rely on it
34
+ - the docs and skills that explain the collaboration path
35
+
36
+ ## Typical collaboration pattern
37
+
38
+ A practical collaboration loop often looks like this:
39
+
40
+ 1. define or update frontend routes/components/icons
41
+ 2. regenerate the relevant frontend metadata or REST/type output
42
+ 3. let backend-side workflows, docs, or fullstack integration logic consume the generated information
43
+ 4. verify the collaboration path still matches the active edition
44
+
45
+ ## Edition awareness
46
+
47
+ This path is especially sensitive to edition differences because Basic and Start do not expose the same frontend module and UI shape.
48
+
49
+ So when AI reasons about frontend-generated metadata, it should verify:
50
+
51
+ - which repo is active
52
+ - which flavor is active
53
+ - which generated output belongs to that edition
54
+
55
+ ## Implementation checks for frontend-metadata changes
56
+
57
+ When changing frontend structural resources such as routes or components, ask:
58
+
59
+ 1. does metadata need regeneration?
60
+ 2. does backend-side tooling or fullstack integration rely on that metadata?
61
+ 3. is this a Basic-specific or Start-specific workflow?
62
+ 4. should the next action be generation and verification rather than only source edits?
63
+
64
+ That keeps the reverse contract loop visible instead of accidental.
@@ -0,0 +1,81 @@
1
+ # Fullstack Introduction
2
+
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
+ ## Shared architecture
19
+
20
+ - **Vona** provides the backend framework capabilities.
21
+ - **Zova** provides the frontend framework capabilities.
22
+ - The root repository coordinates the two through shared scripts, shared terminology, and a shared release story.
23
+
24
+ This combination keeps backend and frontend development close enough for code sharing, workflow reuse, and AI vibe coding workflows.
25
+
26
+ ## How the fullstack system stays connected
27
+
28
+ At the repository level, shared scripts, shared terminology, and CLI-first workflows keep Vona and Zova aligned as one framework system.
29
+
30
+ For the shared terminal-first workflow model, see [Fullstack CLI](/fullstack/cli).
31
+
32
+ ## Why the monorepo matters
33
+
34
+ The monorepo makes it possible to keep backend and frontend concepts, tooling, and generated outputs aligned from source rather than memory, for example:
35
+
36
+ - how frontend routes and components are reflected back into backend type hints
37
+ - how backend OpenAPI and DTO output feeds frontend SDK generation
38
+ - how common concepts can be documented once before edition-specific notes branch out
39
+ - how Vona and Zova CLI capabilities can be reused instead of rebuilding scaffolding by hand
40
+
41
+ ## Technology Stack
42
+
43
+ ### General
44
+
45
+ | Package | Version |
46
+ | ---------- | -------- |
47
+ | TypeScript | `^5.9.3` |
48
+ | Zod | `^4.3.6` |
49
+
50
+ ### Backend (Vona)
51
+
52
+ | Package | Version |
53
+ | -------------------------------- | --------- |
54
+ | Koa | `^3.2.0` |
55
+ | Knex | `^3.2.9` |
56
+ | Redis Client (`ioredis`) | `^5.10.1` |
57
+ | SQLite Driver (`better-sqlite3`) | `^12.9.0` |
58
+
59
+ ### Frontend (Zova)
60
+
61
+ | Package | Version |
62
+ | -------------- | ----------- |
63
+ | Vue | `^3.5.32` |
64
+ | Vite | `^8.0.14` |
65
+ | Quasar | `^2.19.3` |
66
+ | TanStack Query | `^5.100.10` |
67
+ | TanStack Form | `^1.32.0` |
68
+ | TanStack Table | `^8.21.3` |
69
+
70
+ ### Edition-specific UI Stack
71
+
72
+ - **Cabloy Basic**: DaisyUI + Tailwind CSS
73
+ - **Cabloy Start**: Vuetify
74
+
75
+ ## Common-first, edition-aware
76
+
77
+ 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.
78
+
79
+ 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.
80
+
81
+ 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.
@@ -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,89 @@
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. This path creates a Cabloy Basic project baseline. 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
+ 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
+
51
+ For the full Start onboarding details, including the access and initialization flow, read [Cabloy Start](/editions/cabloy-start).
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)
56
+ - [Edition Detection](/editions/detection)
57
+ - [Cabloy Basic](/editions/cabloy-basic)
58
+ - [Cabloy Start](/editions/cabloy-start)
59
+
60
+ ## 5. Upgrade an existing project
61
+
62
+ ```bash
63
+ npm run upgrade
64
+ ```
65
+
66
+ ## 6. Next steps for framework-aware development
67
+
68
+ If you are contributing to framework-aware workflows or using Cabloy CLI generation directly, prefer CLI-backed generation over manual scaffolding.
69
+
70
+ Read [Fullstack CLI](/fullstack/cli) for the shared cross-stack workflow model, then start with:
71
+
72
+ ```bash
73
+ npm run vona :create
74
+ npm run zova :create
75
+ ```
76
+
77
+ Then narrow into the specific command family you need.
78
+
79
+ ## 7. Shared verification commands for deeper workflow checks
80
+
81
+ If you are validating framework-aware changes or a broader workflow, use the shared project scripts before declaring a workflow correct:
82
+
83
+ ```bash
84
+ npm run tsc
85
+ npm run test
86
+ npm run build
87
+ ```
88
+
89
+ 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 the private commercial edition. It lives in a licensed sibling 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 layer, module composition, SSR site baselines, and project assets, 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