cabloy 5.1.61 → 5.1.62

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 (201) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
  2. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -1
  3. package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
  4. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
  5. package/CHANGELOG.md +42 -0
  6. package/CLAUDE.md +1 -0
  7. package/cabloy-docs/.vitepress/config.mjs +158 -12
  8. package/cabloy-docs/ai/docs-skills-rules-mapping.md +8 -0
  9. package/cabloy-docs/ai/future-skill-roadmap.md +2 -0
  10. package/cabloy-docs/ai/skills.md +1 -0
  11. package/cabloy-docs/backend/backend-contract-emission-output-inspection.md +189 -0
  12. package/cabloy-docs/backend/backend-contract-emission-source-reading-map.md +160 -0
  13. package/cabloy-docs/backend/backend-contract-emission-specimen.md +170 -0
  14. package/cabloy-docs/backend/backend-resource-module-contract-chain.md +323 -0
  15. package/cabloy-docs/backend/backend-source-reading-debug-checklist.md +173 -0
  16. package/cabloy-docs/backend/backend-source-reading-roadmap.md +129 -0
  17. package/cabloy-docs/backend/backend-source-reading-verify-playbook.md +166 -0
  18. package/cabloy-docs/backend/bean-scene-authoring.md +4 -4
  19. package/cabloy-docs/backend/broadcast-guide.md +3 -3
  20. package/cabloy-docs/backend/cli.md +20 -11
  21. package/cabloy-docs/backend/config-guide.md +4 -4
  22. package/cabloy-docs/backend/controller-aop-guide.md +10 -10
  23. package/cabloy-docs/backend/controller-guide.md +12 -2
  24. package/cabloy-docs/backend/crud-workflow.md +7 -3
  25. package/cabloy-docs/backend/dto-guide.md +12 -2
  26. package/cabloy-docs/backend/dto-infer-generation.md +201 -25
  27. package/cabloy-docs/backend/election-guide.md +2 -2
  28. package/cabloy-docs/backend/entity-guide.md +12 -3
  29. package/cabloy-docs/backend/error-guide.md +3 -3
  30. package/cabloy-docs/backend/event-guide.md +4 -4
  31. package/cabloy-docs/backend/external-aop-guide.md +2 -2
  32. package/cabloy-docs/backend/field-indexes.md +9 -3
  33. package/cabloy-docs/backend/foundation.md +8 -8
  34. package/cabloy-docs/backend/i18n-guide.md +6 -6
  35. package/cabloy-docs/backend/internal-aop-guide.md +2 -2
  36. package/cabloy-docs/backend/introduction.md +13 -0
  37. package/cabloy-docs/backend/migration-and-changes.md +3 -3
  38. package/cabloy-docs/backend/model-guide.md +16 -6
  39. package/cabloy-docs/backend/openapi-guide.md +3 -0
  40. package/cabloy-docs/backend/queue-guide.md +3 -3
  41. package/cabloy-docs/backend/redlock-guide.md +2 -2
  42. package/cabloy-docs/backend/schedule-guide.md +2 -2
  43. package/cabloy-docs/backend/scripts.md +8 -0
  44. package/cabloy-docs/backend/serialization-guide.md +2 -2
  45. package/cabloy-docs/backend/service-guide.md +18 -9
  46. package/cabloy-docs/backend/startup-guide.md +5 -5
  47. package/cabloy-docs/backend/status-guide.md +7 -7
  48. package/cabloy-docs/backend/unit-testing.md +3 -3
  49. package/cabloy-docs/backend/vona-source-reading-map.md +157 -0
  50. package/cabloy-docs/backend/websocket-protocol-guide.md +5 -5
  51. package/cabloy-docs/backend/websocket-usage-guide.md +15 -8
  52. package/cabloy-docs/frontend/a-model-under-the-hood.md +281 -0
  53. package/cabloy-docs/frontend/a-openapi-under-the-hood.md +248 -0
  54. package/cabloy-docs/frontend/a-router-guide.md +307 -0
  55. package/cabloy-docs/frontend/api-guide.md +4 -4
  56. package/cabloy-docs/frontend/api-schema-guide.md +1 -0
  57. package/cabloy-docs/frontend/app-startup-guide.md +7 -4
  58. package/cabloy-docs/frontend/bean-scene-authoring.md +1 -1
  59. package/cabloy-docs/frontend/behavior-guide.md +16 -16
  60. package/cabloy-docs/frontend/cli.md +5 -5
  61. package/cabloy-docs/frontend/command-scene-authoring.md +17 -8
  62. package/cabloy-docs/frontend/component-guide.md +5 -5
  63. package/cabloy-docs/frontend/component-props-guide.md +1 -1
  64. package/cabloy-docs/frontend/component-v-model-guide.md +2 -2
  65. package/cabloy-docs/frontend/filter-query-select-data-flow-guide.md +260 -0
  66. package/cabloy-docs/frontend/form-guide.md +19 -28
  67. package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
  68. package/cabloy-docs/frontend/foundation.md +10 -6
  69. package/cabloy-docs/frontend/frontend-source-reading-roadmap.md +249 -0
  70. package/cabloy-docs/frontend/generated-contract-consumption-debug-checklist.md +190 -0
  71. package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +205 -0
  72. package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +157 -0
  73. package/cabloy-docs/frontend/generated-contract-consumption-specimen.md +203 -0
  74. package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +189 -0
  75. package/cabloy-docs/frontend/generic-component-guide.md +1 -1
  76. package/cabloy-docs/frontend/introduction.md +29 -7
  77. package/cabloy-docs/frontend/model-architecture.md +38 -2
  78. package/cabloy-docs/frontend/model-resource-cookbook.md +11 -8
  79. package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
  80. package/cabloy-docs/frontend/model-resource-owner-pattern.md +22 -2
  81. package/cabloy-docs/frontend/model-resource-usage-guide.md +22 -6
  82. package/cabloy-docs/frontend/model-state-guide.md +12 -9
  83. package/cabloy-docs/frontend/module-scope.md +8 -8
  84. package/cabloy-docs/frontend/modules-and-suites.md +2 -1
  85. package/cabloy-docs/frontend/navigation-guards-guide.md +7 -0
  86. package/cabloy-docs/frontend/openapi-sdk-guide.md +12 -4
  87. package/cabloy-docs/frontend/page-guide.md +9 -9
  88. package/cabloy-docs/frontend/page-meta-guide.md +466 -0
  89. package/cabloy-docs/frontend/page-params-guide.md +3 -3
  90. package/cabloy-docs/frontend/page-query-guide.md +2 -2
  91. package/cabloy-docs/frontend/page-route-guide.md +6 -0
  92. package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +263 -0
  93. package/cabloy-docs/frontend/quickstart.md +14 -2
  94. package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +271 -0
  95. package/cabloy-docs/frontend/resource-list-page-deep-dive.md +279 -0
  96. package/cabloy-docs/frontend/rest-resource-source-reading-map.md +522 -0
  97. package/cabloy-docs/frontend/rest-resource-under-the-hood.md +622 -0
  98. package/cabloy-docs/frontend/root-behaviors-guide.md +282 -0
  99. package/cabloy-docs/frontend/route-alias-guide.md +6 -0
  100. package/cabloy-docs/frontend/router-stack-guide.md +229 -0
  101. package/cabloy-docs/frontend/router-tabs-introduction.md +26 -3
  102. package/cabloy-docs/frontend/router-tabs-layout-integration.md +367 -0
  103. package/cabloy-docs/frontend/router-tabs-mechanism.md +6 -0
  104. package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +7 -0
  105. package/cabloy-docs/frontend/router-tabs-vs-stack.md +167 -0
  106. package/cabloy-docs/frontend/router-view-hosts-guide.md +450 -0
  107. package/cabloy-docs/frontend/server-data.md +2 -1
  108. package/cabloy-docs/frontend/system-startup-guide.md +2 -2
  109. package/cabloy-docs/frontend/table-action-visibility-permission-flow-guide.md +263 -0
  110. package/cabloy-docs/frontend/table-cell-cookbook.md +568 -0
  111. package/cabloy-docs/frontend/table-guide.md +373 -0
  112. package/cabloy-docs/frontend/table-resource-crud-cookbook.md +496 -0
  113. package/cabloy-docs/frontend/zova-app-guide.md +251 -0
  114. package/cabloy-docs/frontend/zova-form-source-reading-map.md +7 -9
  115. package/cabloy-docs/frontend/zova-form-under-the-hood.md +5 -0
  116. package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
  117. package/cabloy-docs/frontend/zova-source-reading-map.md +101 -7
  118. package/cabloy-docs/frontend/zova-table-controller-render-supplement.md +225 -0
  119. package/cabloy-docs/frontend/zova-table-source-reading-map.md +317 -0
  120. package/cabloy-docs/frontend/zova-table-under-the-hood.md +532 -0
  121. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +245 -0
  122. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +139 -0
  123. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +248 -0
  124. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +511 -0
  125. package/cabloy-docs/fullstack/contract-loop-playbook.md +8 -2
  126. package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
  127. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +181 -48
  128. package/cabloy-docs/fullstack/introduction.md +3 -0
  129. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -2
  130. package/cabloy-docs/fullstack/suites-and-modules.md +333 -0
  131. package/cabloy-docs/fullstack/tutorial-1-first-module.md +3 -0
  132. package/cabloy-docs/fullstack/tutorial-2-first-crud.md +4 -0
  133. package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +4 -0
  134. package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +31 -19
  135. package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +5 -0
  136. package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +4 -0
  137. package/cabloy-docs/fullstack/tutorials-overview.md +1 -1
  138. package/cabloy-docs/reference/bean-scene-boilerplates.md +13 -13
  139. package/cabloy-docs/reference/package-map.md +4 -3
  140. package/package.json +1 -1
  141. package/vona/pnpm-lock.yaml +22 -258
  142. package/vona/src/suite/a-training/modules/training-student/package.json +53 -0
  143. package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +400 -0
  144. package/vona/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +18 -0
  145. package/vona/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  146. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.index.ts +12 -0
  147. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +21 -0
  148. package/vona/src/suite/a-training/modules/training-student/src/bean/ssrMenu.student.ts +29 -0
  149. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +15 -0
  150. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +15 -0
  151. package/vona/src/suite/a-training/modules/training-student/src/controller/student.ts +74 -0
  152. package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +28 -0
  153. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +44 -0
  154. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx +11 -0
  155. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +45 -0
  156. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +42 -0
  157. package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +28 -0
  158. package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +25 -0
  159. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +84 -0
  160. package/vona/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  161. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +10 -0
  162. package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +57 -0
  163. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +173 -0
  164. package/vona/src/suite/a-training/modules/training-student/tsconfig.build.json +11 -0
  165. package/vona/src/suite/a-training/modules/training-student/tsconfig.json +7 -0
  166. package/vona/src/suite/a-training/package.json +12 -0
  167. package/vona/src/suite/a-training/tsconfig.base.json +4 -0
  168. package/vona/src/suite/a-training/tsconfig.json +10 -0
  169. package/zova/packages-zova/zova/package.json +2 -2
  170. package/zova/pnpm-lock.yaml +406 -680
  171. package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
  172. package/zova/src/suite/a-training/modules/training-student/package.json +52 -0
  173. package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
  174. package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
  175. package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
  176. package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  177. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
  178. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
  179. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
  180. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
  181. package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
  182. package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
  183. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +51 -0
  184. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
  185. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
  186. package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
  187. package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
  188. package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
  189. package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  190. package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
  191. package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
  192. package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
  193. package/zova/src/suite/a-training/package.json +12 -0
  194. package/zova/src/suite/a-training/tsconfig.base.json +4 -0
  195. package/zova/src/suite/a-training/tsconfig.json +4 -0
  196. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
  197. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
  198. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
  199. package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
  200. package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
  201. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -0,0 +1,166 @@
1
+ # Backend Source Reading Verify Playbook
2
+
3
+ This page is a proof-oriented verification companion for one narrow backend question:
4
+
5
+ > after I have chosen a backend source-reading path, what must be true at each backend layer before I trust it?
6
+
7
+ Use this page together with:
8
+
9
+ - [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap)
10
+ - [Vona Source Reading Map](/backend/vona-source-reading-map)
11
+ - [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
12
+ - [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen)
13
+ - [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)
14
+ - [Backend Contract Emission Output Inspection](/backend/backend-contract-emission-output-inspection)
15
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
16
+
17
+ > [!TIP]
18
+ > **Backend source-reading verification path**
19
+ >
20
+ > 1. **[Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap)** — choose the backend source-reading branch
21
+ > 2. **[Vona Source Reading Map](/backend/vona-source-reading-map)**, **[Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)**, or the emission family — inspect the relevant branch/specimen first
22
+ > 3. **[Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook)** — prove the backend-side path layer by layer
23
+ >
24
+ > **You are here:** step 3.
25
+ > **Previous recommended pages:** [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap) and [Vona Source Reading Map](/backend/vona-source-reading-map).
26
+
27
+ ## Why this page exists
28
+
29
+ The current backend source-reading family already gives you:
30
+
31
+ - a chooser page
32
+ - a broad file-order map
33
+ - a module-wiring specimen
34
+ - an emission specimen/map/inspection family
35
+
36
+ What was still missing was one proof-oriented page that tells you what must be true at each backend layer before you trust the path.
37
+
38
+ This page fills that gap.
39
+
40
+ It is not another concept page and not another file-order map. It is the verification playbook for backend source-reading.
41
+
42
+ ## Phase 1: Scope the backend branch first
43
+
44
+ Before checking details, decide which backend branch you are actually in.
45
+
46
+ ### Module-wiring branch
47
+
48
+ Use this branch when the question is about:
49
+
50
+ - how controller, service, model, entity, and DTO layers still connect
51
+ - whether generated metadata still reflects the intended module/resource shape
52
+ - whether the current module-wiring specimen still matches the real code path
53
+
54
+ ### Contract-emission branch
55
+
56
+ Use this branch when the question is about:
57
+
58
+ - whether controller + DTO + entity metadata still shape the emitted backend contract correctly
59
+ - whether generated metadata records and emitted OpenAPI output still agree
60
+ - whether the backend side is ready to hand off into the forward bridge
61
+
62
+ ### Emitted-output inspection only
63
+
64
+ Use this branch when the input-side source path already looks correct and you only need to verify the emitted output surface itself.
65
+
66
+ ## Phase 2: Prove the shared generated/module anchor surfaces
67
+
68
+ Start with the smallest shared backend anchors.
69
+
70
+ Primary anchors:
71
+
72
+ - `vona/src/suite/a-training/modules/training-student/src/index.ts`
73
+ - `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
74
+
75
+ What to prove:
76
+
77
+ - the module entry still re-exports the generated surfaces where expected
78
+ - the generated registration surface still exposes the expected controller/model/service/entity/DTO path
79
+ - the current source-reading/specimen docs still line up with the actual generated module surface
80
+
81
+ If this phase fails, do not continue into either branch. The backend source-reading path is already wrong too early.
82
+
83
+ ## Phase 3A: Prove the module-wiring branch
84
+
85
+ Only enter this phase when the question is clearly about module wiring.
86
+
87
+ Primary anchors:
88
+
89
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
90
+ - `vona/src/suite/a-training/modules/training-student/src/service/student.ts`
91
+ - `vona/src/suite/a-training/modules/training-student/src/model/student.ts`
92
+ - `vona/src/suite/a-training/modules/training-student/src/entity/student.tsx`
93
+ - `vona/src/suite/a-training/modules/training-student/src/dto/*.tsx`
94
+
95
+ What to prove:
96
+
97
+ - controller, service, model, entity, and DTO layers still connect as expected
98
+ - the generated metadata still reflects the intended module/resource chain
99
+ - the current specimen path still matches the actual backend code path
100
+
101
+ If this phase passes, the backend source-reading path is correct enough to trust the module-wiring branch.
102
+
103
+ ## Phase 3B: Prove the contract-emission branch
104
+
105
+ Only enter this phase when the question is clearly about emitted backend contract truth.
106
+
107
+ Primary anchors:
108
+
109
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
110
+ - `vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx`
111
+ - `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
112
+ - emitted output surface already used in docs:
113
+ - `http://localhost:7102/swagger/json?version=V31`
114
+
115
+ What to prove:
116
+
117
+ - the controller action still declares the intended emitted path and response contract
118
+ - the named DTO still matches the intended emitted response shape
119
+ - generated metadata records still line up with emitted route/DTO presence
120
+ - the emitted output surface itself still reflects those backend inputs
121
+
122
+ If this phase passes, the backend emission branch is correct enough to hand off to the forward bridge.
123
+
124
+ ## Phase 4: Escalate only after the backend proof steps pass
125
+
126
+ Only after the earlier proof steps pass should you descend into:
127
+
128
+ - fullstack forward-bridge docs
129
+ - frontend generation/consumption docs
130
+ - deeper consumer-side verification
131
+
132
+ That is the boundary that keeps this page backend-side and source-reading focused.
133
+
134
+ ## What this page does not re-explain
135
+
136
+ This page deliberately does **not** re-teach:
137
+
138
+ - the conceptual backend overview -> see [Backend (Vona)](/backend/introduction)
139
+ - controller/service/model/entity/DTO concept guides
140
+ - the broad chooser and broad file-order map -> see [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap) and [Vona Source Reading Map](/backend/vona-source-reading-map)
141
+ - the module-wiring specimen -> see [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
142
+ - the emission family pages -> see [OpenAPI Guide](/backend/openapi-guide), [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen), [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map), and [Backend Contract Emission Output Inspection](/backend/backend-contract-emission-output-inspection)
143
+ - the fullstack forward bridge -> see [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
144
+
145
+ Its job is only to tell you what must be true at each backend layer before you trust the source-reading path.
146
+
147
+ ## Where to read next
148
+
149
+ - If you need the chooser page first, return to [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap).
150
+ - If you need the broad file-order map first, continue with [Vona Source Reading Map](/backend/vona-source-reading-map).
151
+ - If the backend result already looks wrong and you want symptom-first diagnosis, continue with [Backend Source Reading Debug Checklist](/backend/backend-source-reading-debug-checklist).
152
+ - If the backend path is now proven and you want the downstream bridge, hand off to [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
153
+ - If the backend truth is proven but the real problem is one mixed Student row-action chain, hand off to [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions).
154
+ - If you are still unsure which contract direction or drift type actually applies, return to [Contract Loop Playbook](/fullstack/contract-loop-playbook).
155
+
156
+ ## Final takeaway
157
+
158
+ The cleanest way to verify a backend source-reading path is not to jump straight into downstream frontend generation or the broadest concept docs.
159
+
160
+ First prove:
161
+
162
+ - the shared generated/module surface
163
+ - the relevant module-wiring or emission branch
164
+ - the emitted output surface when needed
165
+
166
+ Only then hand off to the fullstack bridge if you still need the downstream path.
@@ -183,7 +183,7 @@ Representative generated output:
183
183
  ```typescript
184
184
  declare module 'vona' {
185
185
  export interface IBeanRecordGeneral {
186
- 'demo-student.service.student': ServiceStudent;
186
+ 'training-student.service.student': ServiceStudent;
187
187
  }
188
188
  }
189
189
  ```
@@ -248,8 +248,8 @@ Representative generated service output includes:
248
248
 
249
249
  ```typescript
250
250
  export interface ServiceStudent {
251
- get $beanFullName(): 'demo-student.service.student';
252
- get $onionName(): 'demo-student:student';
251
+ get $beanFullName(): 'training-student.service.student';
252
+ get $onionName(): 'training-student:student';
253
253
  }
254
254
  ```
255
255
 
@@ -272,7 +272,7 @@ Keep these two tasks separate.
272
272
  Example:
273
273
 
274
274
  ```bash
275
- npm run vona :create:bean service student -- --module=demo-student
275
+ npm run vona :create:bean service student -- --module=training-student
276
276
  ```
277
277
 
278
278
  This uses an already-defined scene.
@@ -10,10 +10,10 @@ This is important because some business logic is not point-to-point background w
10
10
 
11
11
  ## Create a broadcast
12
12
 
13
- Example: create a broadcast named `echo` in module `demo-student`.
13
+ Example: create a broadcast named `echo` in module `training-student`.
14
14
 
15
15
  ```bash
16
- npm run vona :create:bean broadcast echo -- --module=demo-student
16
+ npm run vona :create:bean broadcast echo -- --module=training-student
17
17
  ```
18
18
 
19
19
  ## Broadcast definition
@@ -78,7 +78,7 @@ Representative pattern:
78
78
  ```typescript
79
79
  config.onions = {
80
80
  broadcast: {
81
- 'demo-student:echo': {
81
+ 'training-student:echo': {
82
82
  instance: true,
83
83
  transaction: true,
84
84
  },
@@ -87,31 +87,31 @@ npm run vona :create:module moduleName -- [--suite=]
87
87
  ### Create a service bean
88
88
 
89
89
  ```bash
90
- npm run vona :create:bean service student -- --module=demo-student
90
+ npm run vona :create:bean service student -- --module=training-student
91
91
  ```
92
92
 
93
93
  ### Create a model bean
94
94
 
95
95
  ```bash
96
- npm run vona :create:bean model student -- --module=demo-student
96
+ npm run vona :create:bean model student -- --module=training-student
97
97
  ```
98
98
 
99
99
  ### Create an entity bean
100
100
 
101
101
  ```bash
102
- npm run vona :create:bean entity student -- --module=demo-student
102
+ npm run vona :create:bean entity student -- --module=training-student
103
103
  ```
104
104
 
105
105
  ### Create a DTO bean
106
106
 
107
107
  ```bash
108
- npm run vona :create:bean dto studentCreate -- --module=demo-student
108
+ npm run vona :create:bean dto studentCreate -- --module=training-student
109
109
  ```
110
110
 
111
111
  ### Create a startup bean
112
112
 
113
113
  ```bash
114
- npm run vona :create:bean startup log -- --module=demo-student
114
+ npm run vona :create:bean startup log -- --module=training-student
115
115
  ```
116
116
 
117
117
  These examples show that the CLI is tightly connected to module boundaries and bean scenes such as service, model, entity, DTO, and startup.
@@ -129,7 +129,7 @@ Some backend bean scenes expose more than one scaffold template.
129
129
  In those cases, use `--boilerplate=...` to select a named variant:
130
130
 
131
131
  ```bash
132
- npm run vona :create:bean ssrMenu menuTest -- --module=demo-student --boilerplate=web
132
+ npm run vona :create:bean ssrMenu menuTest -- --module=training-student --boilerplate=web
133
133
  ```
134
134
 
135
135
  A practical rule is:
@@ -147,10 +147,10 @@ Not every backend resource is created through bean scenes.
147
147
  Representative initializer commands include:
148
148
 
149
149
  ```bash
150
- npm run vona :init:constant demo-student
151
- npm run vona :init:types demo-student
152
- npm run vona :init:lib demo-student
153
- npm run vona :init:asset static -- --module=demo-student
150
+ npm run vona :init:constant training-student
151
+ npm run vona :init:types training-student
152
+ npm run vona :init:lib training-student
153
+ npm run vona :init:asset static -- --module=training-student
154
154
  ```
155
155
 
156
156
  A practical distinction is:
@@ -160,7 +160,7 @@ A practical distinction is:
160
160
 
161
161
  A practical helper-placement rule is:
162
162
 
163
- - if a backend module needs reusable pure helper functions, initialize `src/lib` with `npm run vona :init:lib demo-student`
163
+ - if a backend module needs reusable pure helper functions, initialize `src/lib` with `npm run vona :init:lib training-student`
164
164
  - place those shared helpers under `src/lib` and export shared entrypoints from `src/lib/index.ts`
165
165
  - if the logic needs container-managed runtime behavior, do not force it into `src/lib`; re-evaluate `src/service` or another bean scene instead
166
166
 
@@ -196,3 +196,12 @@ When creating backend code:
196
196
  4. only then make minimal follow-up edits
197
197
 
198
198
  This reduces unnecessary manual scaffolding and keeps the implementation aligned with Vona conventions.
199
+
200
+ ## Where to read next
201
+
202
+ If your next question is no longer only which command to run, but which backend source files to inspect after the CLI step, continue with:
203
+
204
+ - [Backend Scripts](/backend/scripts)
205
+ - [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap)
206
+ - [Vona Source Reading Map](/backend/vona-source-reading-map)
207
+ - [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
@@ -12,10 +12,10 @@ That matters because backend capabilities often need both:
12
12
 
13
13
  ## Initialize the config skeleton
14
14
 
15
- Example: initialize config for module `demo-student`.
15
+ Example: initialize config for module `training-student`.
16
16
 
17
17
  ```bash
18
- npm run vona :init:config demo-student
18
+ npm run vona :init:config training-student
19
19
  ```
20
20
 
21
21
  This gives the module its own config file under the module’s config area.
@@ -53,7 +53,7 @@ Cross-module config access uses the cross-module scope surface.
53
53
  Representative pattern:
54
54
 
55
55
  ```typescript
56
- console.log(this.$scope.demoStudent.config.title);
56
+ console.log(this.$scope.trainingStudent.config.title);
57
57
  ```
58
58
 
59
59
  A practical distinction is:
@@ -122,7 +122,7 @@ Representative pattern:
122
122
 
123
123
  ```typescript
124
124
  config.modules = {
125
- 'demo-student': {
125
+ 'training-student': {
126
126
  title: 'Hello World!!',
127
127
  },
128
128
  };
@@ -23,9 +23,9 @@ Middleware is used for request-path behavior that wraps execution before and aft
23
23
  Representative CLI generation patterns from the legacy workflow include:
24
24
 
25
25
  ```bash
26
- npm run vona :create:bean middlewareSystem logger -- --module=demo-student
27
- npm run vona :create:bean middleware logger -- --module=demo-student --boilerplate=global
28
- npm run vona :create:bean middleware logger -- --module=demo-student
26
+ npm run vona :create:bean middlewareSystem logger -- --module=training-student
27
+ npm run vona :create:bean middleware logger -- --module=training-student --boilerplate=global
28
+ npm run vona :create:bean middleware logger -- --module=training-student
29
29
  ```
30
30
 
31
31
  These commands all go through the shared `:create:bean` entrypoint, but they target different middleware scopes and boilerplates.
@@ -45,13 +45,13 @@ This is where Vona places concerns such as not-found handling, request override
45
45
  ### Representative local usage
46
46
 
47
47
  ```typescript
48
- @Aspect.middleware('demo-student:logger')
48
+ @Aspect.middleware('training-student:logger')
49
49
  ```
50
50
 
51
51
  ### Representative global usage
52
52
 
53
53
  ```typescript
54
- @Aspect.middlewareGlobal('demo-student:logger', { prefix: 'elapsed' })
54
+ @Aspect.middlewareGlobal('training-student:logger', { prefix: 'elapsed' })
55
55
  ```
56
56
 
57
57
  ### Representative built-in usage
@@ -85,7 +85,7 @@ Typical jobs include:
85
85
  ### Representative local usage
86
86
 
87
87
  ```typescript
88
- @Aspect.guard('demo-student:admin')
88
+ @Aspect.guard('training-student:admin')
89
89
  ```
90
90
 
91
91
  ### Representative built-in usage
@@ -120,7 +120,7 @@ Typical jobs include:
120
120
  ### Representative local usage
121
121
 
122
122
  ```typescript
123
- @Aspect.interceptor('demo-student:logger')
123
+ @Aspect.interceptor('training-student:logger')
124
124
  ```
125
125
 
126
126
  ### Representative built-in usage
@@ -140,7 +140,7 @@ Pipes transform or validate request values before they reach controller logic.
140
140
  ### Representative local pipe usage
141
141
 
142
142
  ```typescript
143
- @Aspect.pipe('demo-student:number')
143
+ @Aspect.pipe('training-student:number')
144
144
  ```
145
145
 
146
146
  ### Argument pipe pattern
@@ -150,7 +150,7 @@ Argument pipes are usually created from a local pipe:
150
150
  ```typescript
151
151
  import { createArgumentPipe } from 'vona-module-a-aspect';
152
152
 
153
- export const ArgNumber = createArgumentPipe('demo-student:number');
153
+ export const ArgNumber = createArgumentPipe('training-student:number');
154
154
  ```
155
155
 
156
156
  Used on a controller parameter:
@@ -191,7 +191,7 @@ This is where request-path error customization becomes explicit.
191
191
  ### Representative local usage
192
192
 
193
193
  ```typescript
194
- @Aspect.filter('demo-student:test')
194
+ @Aspect.filter('training-student:test')
195
195
  ```
196
196
 
197
197
  ### Built-in filter
@@ -18,12 +18,12 @@ A useful contract-loop mental model is:
18
18
 
19
19
  ## Create a controller
20
20
 
21
- Example: create a controller named `student` in module `demo-student`.
21
+ Example: create a controller named `student` in module `training-student`.
22
22
 
23
23
  ### CLI command
24
24
 
25
25
  ```bash
26
- npm run vona :create:bean controller student -- --module=demo-student
26
+ npm run vona :create:bean controller student -- --module=training-student
27
27
  ```
28
28
 
29
29
  ## Controller definition
@@ -345,3 +345,13 @@ The safest workflow is:
345
345
  3. add `@Web`, `@Arg`, validation, and OpenAPI metadata in the same style
346
346
  4. choose deliberately whether response wrapper defaults should stay in place
347
347
  5. verify the resulting routes and response conventions
348
+
349
+ ## Where to read next
350
+
351
+ If your next question is how the HTTP-facing controller layer connects to the rest of one real backend module, continue with:
352
+
353
+ - [Service Guide](/backend/service-guide)
354
+ - [DTO Guide](/backend/dto-guide)
355
+ - [OpenAPI Guide](/backend/openapi-guide)
356
+ - [Vona Source Reading Map](/backend/vona-source-reading-map)
357
+ - [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
@@ -8,18 +8,22 @@ CRUD is one of the clearest places where Cabloy’s CLI-first philosophy pays of
8
8
 
9
9
  Instead of creating controller, service, model, entity, DTO, metadata, locale, and test files by hand, Vona already provides generators that create the initial backend thread.
10
10
 
11
+ > [!NOTE]
12
+ > The fullstack tutorial series intentionally uses a standalone `demo-student` sandbox so readers can experiment without colliding with the repo's real suite-owned `a-training/training-student` implementation.
13
+ > This guide, by contrast, uses the current repo implementation as its compact specimen.
14
+
11
15
  ## Generate a CRUD skeleton
12
16
 
13
- Example: generate a CRUD workflow for `student` in module `demo-student`.
17
+ Example: generate a CRUD workflow for `student` in module `training-student`.
14
18
 
15
19
  ```bash
16
- npm run vona :tools:crud student -- --module=demo-student
20
+ npm run vona :tools:crud student -- --module=training-student
17
21
  ```
18
22
 
19
23
  A lighter variant also exists:
20
24
 
21
25
  ```bash
22
- npm run vona :tools:crudBasic student -- --module=demo-student
26
+ npm run vona :tools:crudBasic student -- --module=training-student
23
27
  ```
24
28
 
25
29
  This is important because the repo already encodes both the full CRUD thread and a lighter CRUD-basic workflow in the CLI surface.
@@ -16,10 +16,10 @@ That is why DTO design should be treated as a framework concern instead of only
16
16
 
17
17
  ## Create a DTO
18
18
 
19
- Example: create a DTO named `studentCreate` in module `demo-student`.
19
+ Example: create a DTO named `studentCreate` in module `training-student`.
20
20
 
21
21
  ```bash
22
- npm run vona :create:bean dto studentCreate -- --module=demo-student
22
+ npm run vona :create:bean dto studentCreate -- --module=training-student
23
23
  ```
24
24
 
25
25
  ## DTO definition
@@ -172,3 +172,13 @@ When creating DTOs:
172
172
  4. avoid re-declaring fields manually if Vona’s DTO-generation or class-derivation tools already solve the problem
173
173
  5. treat DTO design as part of the contract between backend handlers, models, and frontend integration
174
174
  6. choose explicit DTOs when named long-lived contracts matter, and inferred DTOs when the model/query shape already expresses the contract clearly
175
+
176
+ ## Where to read next
177
+
178
+ If your next question is how named DTO artifacts fit into one complete backend module specimen, continue with:
179
+
180
+ - [DTO Infer and Generation](/backend/dto-infer-generation)
181
+ - [Controller Guide](/backend/controller-guide)
182
+ - [OpenAPI Guide](/backend/openapi-guide)
183
+ - [Vona Source Reading Map](/backend/vona-source-reading-map)
184
+ - [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)