cabloy 5.1.61 → 5.1.63

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 (230) 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 +55 -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 +27 -30
  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 +571 -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 +423 -682
  171. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolOne/render.tsx +5 -3
  172. package/zova/src/suite/a-home/modules/home-login/src/page/login/render.tsx +5 -3
  173. package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
  174. package/zova/src/suite/a-training/modules/training-student/package.json +57 -0
  175. package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
  176. package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
  177. package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
  178. package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  179. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
  180. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
  181. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
  182. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
  183. package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
  184. package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
  185. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +53 -0
  186. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
  187. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
  188. package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
  189. package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
  190. package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
  191. package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  192. package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
  193. package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
  194. package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
  195. package/zova/src/suite/a-training/package.json +12 -0
  196. package/zova/src/suite/a-training/tsconfig.base.json +4 -0
  197. package/zova/src/suite/a-training/tsconfig.json +4 -0
  198. package/zova/src/suite/cabloy-basic/modules/basic-app/package.json +60 -0
  199. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/index.ts +137 -0
  200. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/locales.ts +7 -0
  201. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/this.ts +2 -0
  202. package/zova/src/suite/cabloy-basic/modules/basic-app/src/bean/behavior.appModal.tsx +260 -0
  203. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/config.ts +39 -0
  204. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/en-us.ts +7 -0
  205. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/zh-cn.ts +7 -0
  206. package/zova/src/suite/cabloy-basic/modules/basic-app/src/index.ts +4 -0
  207. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/appModalItem.ts +16 -0
  208. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/index.ts +1 -0
  209. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkey.ts +38 -0
  210. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkeySys.ts +14 -0
  211. package/zova/src/suite/cabloy-basic/modules/basic-app/src/service/appModal.ts +89 -0
  212. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/appModal.ts +52 -0
  213. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/index.ts +1 -0
  214. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.build.json +13 -0
  215. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.json +5 -0
  216. package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +6 -1
  217. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/.metadata/index.ts +16 -0
  218. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.alert.tsx +8 -14
  219. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.confirm.tsx +10 -7
  220. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.prompt.tsx +30 -0
  221. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx +5 -3
  222. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
  223. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
  224. package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +6 -1
  225. package/zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionDelete.tsx +4 -2
  226. package/zova/src/suite/cabloy-basic/package.json +1 -0
  227. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
  228. package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
  229. package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
  230. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -0,0 +1,323 @@
1
+ # Backend Resource/Module Contract Chain
2
+
3
+ This page is a focused deep dive into one narrow backend question:
4
+
5
+ > how does one real Vona backend module become a working contract chain from generated metadata through controller, service, model, entity, and DTO layers?
6
+
7
+ It uses the current `training-student` module as the specimen.
8
+
9
+ Use this page together with:
10
+
11
+ - [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap)
12
+ - [Vona Source Reading Map](/backend/vona-source-reading-map)
13
+ - [Controller Guide](/backend/controller-guide)
14
+ - [Service Guide](/backend/service-guide)
15
+ - [Model Guide](/backend/model-guide)
16
+ - [Entity Guide](/backend/entity-guide)
17
+ - [DTO Guide](/backend/dto-guide)
18
+ - [OpenAPI Guide](/backend/openapi-guide)
19
+ - [CRUD Workflow](/backend/crud-workflow)
20
+
21
+ > [!TIP]
22
+ > **Backend contract-reading path**
23
+ >
24
+ > 1. **[Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap)** — choose the right backend reading cluster
25
+ > 2. **[Vona Source Reading Map](/backend/vona-source-reading-map)** — find the shortest file-order path into source
26
+ > 3. **[Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)** — walk one concrete module through the whole contract chain
27
+ >
28
+ > **You are here:** step 3.
29
+ > **Previous recommended pages:** [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap) and [Vona Source Reading Map](/backend/vona-source-reading-map).
30
+
31
+ ## Why this page exists
32
+
33
+ The current backend docs already explain each layer well:
34
+
35
+ - controllers define HTTP-facing contracts
36
+ - services orchestrate business flow
37
+ - models own persistence-facing behavior
38
+ - entities shape the field contract
39
+ - DTOs shape named request and response artifacts
40
+
41
+ The new backend roadmap and source-reading map also help readers choose the right topic cluster and source-file order.
42
+
43
+ What was still missing was one page that stays narrow and shows how those layers connect in one real module.
44
+
45
+ This page fills that gap.
46
+
47
+ It is not a replacement for the existing backend guides. It is a specimen page that shows how the handoffs connect in one concrete thread.
48
+
49
+ ## Shortest accurate mental model
50
+
51
+ The `training-student` contract chain is easiest to read like this:
52
+
53
+ 1. `src/index.ts` exposes the module reading entry
54
+ 2. `src/.metadata/index.ts` is the generated contract-registration hub
55
+ 3. `controller/student.ts` defines the resource-facing HTTP actions
56
+ 4. `service/student.ts` orchestrates the business handoff
57
+ 5. `model/student.ts` binds persistence behavior to the entity
58
+ 6. `entity/student.tsx` defines the shared field contract
59
+ 7. `dto/*.tsx` defines the named transport artifacts around that contract
60
+
61
+ The most important reading trick is this:
62
+
63
+ > do not skip `.metadata/index.ts`.
64
+
65
+ For this kind of backend source-reading task, the generated metadata file is part of the readable contract surface, not only an implementation detail.
66
+
67
+ ## Source-confirmed reading path
68
+
69
+ Read the `training-student` module in this order:
70
+
71
+ 1. `vona/src/suite/a-training/modules/training-student/src/index.ts`
72
+ 2. `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
73
+ 3. `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
74
+ 4. `vona/src/suite/a-training/modules/training-student/src/service/student.ts`
75
+ 5. `vona/src/suite/a-training/modules/training-student/src/model/student.ts`
76
+ 6. `vona/src/suite/a-training/modules/training-student/src/entity/student.tsx`
77
+ 7. `vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx`
78
+ 8. `vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx`
79
+ 9. `vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx`
80
+ 10. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx`
81
+ 11. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx`
82
+ 12. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx`
83
+
84
+ That order starts from the public module entry, foregrounds the generated registration hub early, then descends through the authored runtime layers and the named DTO artifacts.
85
+
86
+ ## Contract chain by layer
87
+
88
+ ### 1. `src/index.ts`: the public module entry
89
+
90
+ `vona/src/suite/a-training/modules/training-student/src/index.ts` is intentionally small:
91
+
92
+ - it re-exports `./.metadata/locales.ts`
93
+ - it re-exports `./.metadata/index.ts`
94
+
95
+ That tells you something important immediately.
96
+
97
+ The generated metadata layer is not hidden away from the module’s reading path. It is part of the public module surface that other code and readers are expected to consume.
98
+
99
+ For source reading, that means:
100
+
101
+ - start at `index.ts` to confirm the module entry
102
+ - then move into `.metadata/index.ts` before diving straight into controller/service/model files
103
+
104
+ ### 2. `src/.metadata/index.ts`: the generated contract-registration hub
105
+
106
+ This is the key file for understanding the full chain.
107
+
108
+ `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts` shows, in one generated surface, how the module is registered across several backend layers at once.
109
+
110
+ Representative things it exposes include:
111
+
112
+ - entity registrations such as `IEntityRecord` and `ITableRecord`
113
+ - model registrations such as `IModelRecord` and `IModelClassRecord`
114
+ - service registrations such as `IServiceRecord`
115
+ - controller registrations such as `IControllerRecord`
116
+ - DTO registrations such as `IDtoRecord`
117
+ - meta registrations such as `IMetaRecord`
118
+ - API path typings such as `IApiPathGetRecord`, `IApiPathPostRecord`, `IApiPathPatchRecord`, and `IApiPathDeleteRecord`
119
+ - resource registration through `IResourceRecord`
120
+ - scope wiring through `IBeanScopeRecord`, `IBeanScopeContainer`, and the module scope class
121
+
122
+ This matters because the contract chain is not only a call stack.
123
+
124
+ It is also a generated registration system that ties together:
125
+
126
+ - bean names
127
+ - onion names
128
+ - typed scope access
129
+ - route paths
130
+ - resource ownership
131
+ - DTO availability
132
+
133
+ A practical reading takeaway is:
134
+
135
+ > if you want to understand how the module is wired as a backend contract surface, `.metadata/index.ts` is the fastest summary file in the module.
136
+
137
+ ### 3. `controller/student.ts`: the HTTP and resource-facing entry layer
138
+
139
+ `vona/src/suite/a-training/modules/training-student/src/controller/student.ts` is the HTTP-facing contract surface.
140
+
141
+ Representative source facts from this file:
142
+
143
+ - the class is decorated with `@Controller<IControllerOptionsStudent>('student')`
144
+ - the class is also decorated with `@Resource()`
145
+ - CRUD actions are declared with `@Web.post()`, `@Web.get()`, `@Web.get(':id')`, `@Web.patch(':id')`, and `@Web.delete(':id')`
146
+ - request shapes use `@Arg.body(...)`, `@Arg.param(...)`, and `@Arg.filter(...)`
147
+ - actions delegate to `this.scope.service.student`
148
+
149
+ This is the layer where several concerns meet in one place:
150
+
151
+ - route and action declaration
152
+ - request extraction and typing
153
+ - response contract exposure
154
+ - handoff to service orchestration
155
+
156
+ A good reading pattern here is:
157
+
158
+ - read the action signatures first
159
+ - note which DTOs or typed parameters they reference
160
+ - then follow the delegation to the service layer
161
+
162
+ ### 4. `service/student.ts`: the orchestration handoff layer
163
+
164
+ `vona/src/suite/a-training/modules/training-student/src/service/student.ts` is intentionally thin.
165
+
166
+ Representative source facts:
167
+
168
+ - the class is decorated with `@Service()`
169
+ - `create(...)` delegates to `this.scope.model.student.insert(...)`
170
+ - `select(...)` delegates to `this.scope.model.student.selectAndCount(...)`
171
+ - `view(...)` delegates to `this.scope.model.student.getById(...)`
172
+ - `update(...)` delegates to `this.scope.model.student.updateById(...)`
173
+ - `delete(...)` delegates to `this.scope.model.student.deleteById(...)`
174
+
175
+ That thinness is part of the point.
176
+
177
+ This specimen makes the layer boundary very easy to see:
178
+
179
+ - controller owns the HTTP-facing resource surface
180
+ - service owns the business-oriented handoff
181
+ - model owns the persistence-facing behavior
182
+
183
+ So even though this particular service is small, it is still important for reading the chain correctly.
184
+
185
+ ### 5. `model/student.ts`: the persistence binding
186
+
187
+ `vona/src/suite/a-training/modules/training-student/src/model/student.ts` is also compact.
188
+
189
+ Representative source fact:
190
+
191
+ - `@Model<IModelOptionsStudent>({ entity: EntityStudent })`
192
+
193
+ This is the bridge from service-layer orchestration into entity-backed ORM behavior.
194
+
195
+ The main point here is not complexity. It is ownership.
196
+
197
+ The file shows that persistence behavior is not encoded in the controller and not declared ad hoc in the service. It is bound through the model/entity pairing.
198
+
199
+ That is why this layer belongs in the contract chain even when the class body is short.
200
+
201
+ ### 6. `entity/student.tsx`: the shared field-contract surface
202
+
203
+ `vona/src/suite/a-training/modules/training-student/src/entity/student.tsx` is where field structure, validation-facing metadata, OpenAPI-facing metadata, and UI-related render metadata meet.
204
+
205
+ Representative source facts:
206
+
207
+ - the entity is decorated with `@Entity<IEntityOptionsStudent>('trainingStudent', ...)`
208
+ - base field metadata is configured in `fields`
209
+ - domain fields such as `name`, `description`, and `level` use `@Api.field(...)`
210
+ - `studentLevelSchema` and `studentLevelItems` define a concrete field-level contract for the `level` field
211
+ - `ZovaRender.field(...)` and `ZovaRender.cell(...)` are attached directly to the field metadata
212
+
213
+ This is a strong example of the Cabloy contract loop in practice.
214
+
215
+ The same field surface participates in:
216
+
217
+ - validation-oriented structure
218
+ - OpenAPI metadata
219
+ - named DTO derivation
220
+ - downstream UI/render metadata
221
+
222
+ A practical reading takeaway is:
223
+
224
+ > the entity is not only a persistence record. It is one of the main shared contract surfaces in the backend thread.
225
+
226
+ ### 7. `dto/*.tsx`: the named transport artifacts
227
+
228
+ The DTO files turn the shared field contract into named request and response artifacts for specific operations.
229
+
230
+ A useful way to read the `training-student` DTO family is by operation type.
231
+
232
+ #### Create / update / view DTOs
233
+
234
+ These files are the clearest operation-facing transport artifacts:
235
+
236
+ - `dto/studentCreate.tsx`
237
+ - `dto/studentUpdate.tsx`
238
+ - `dto/studentView.tsx`
239
+
240
+ Representative source facts:
241
+
242
+ - `DtoStudentCreate` extends `$Dto.create(() => ModelStudent)`
243
+ - `DtoStudentUpdate` extends `$Dto.update(() => ModelStudent)`
244
+ - `DtoStudentView` extends `$Dto.get(() => ModelStudent)`
245
+
246
+ These files show that named DTO artifacts do not have to restate every field manually when the framework can derive the contract shape from the model/entity thread.
247
+
248
+ #### Query and list-response DTOs
249
+
250
+ For the read/list side, these files are especially important:
251
+
252
+ - `dto/studentSelectReq.tsx`
253
+ - `dto/studentSelectResItem.tsx`
254
+ - `dto/studentSelectRes.tsx`
255
+
256
+ `studentSelectReq.tsx` is a strong specimen because it shows query/filter contract shaping that is more than a bare type alias.
257
+
258
+ Representative source facts:
259
+
260
+ - it uses `@Dto({ openapi: { filter: { table: 'trainingStudent' } }, fields: { ... } })`
261
+ - it extends `$Dto.queryPage(EntityStudent, ['name', 'level', 'createdAt'])`
262
+ - `level` uses a preprocess step so string query input can be normalized before schema validation
263
+ - `createdAt` uses `v.filterTransform('a-web:dateRange')`
264
+
265
+ That makes it a useful example of how request/filter contracts can:
266
+
267
+ - stay tied to entity-derived structure
268
+ - still add operation-specific filter shaping and transform behavior
269
+
270
+ `studentSelectResItem.tsx` is useful for a different reason.
271
+
272
+ It shows that a list-row response DTO can still participate in the broader contract loop through response-facing metadata such as:
273
+
274
+ - block metadata
275
+ - table action metadata
276
+ - row action render hints
277
+
278
+ Finally, `studentSelectRes.tsx` shows the aggregate response wrapper for the list result:
279
+
280
+ - `DtoStudentSelectRes` extends `$Dto.listAndCount(DtoStudentSelectResItem)`
281
+
282
+ So the list-response chain is not one file only. It is:
283
+
284
+ 1. one query/filter request DTO
285
+ 2. one row-item DTO
286
+ 3. one list-and-count response DTO
287
+
288
+ ## What this page does not re-explain
289
+
290
+ This page deliberately does **not** re-teach the full semantics of each layer.
291
+
292
+ For the broader explanations, continue with:
293
+
294
+ - [Controller Guide](/backend/controller-guide) for controller decorators and route behavior
295
+ - [Service Guide](/backend/service-guide) for service access patterns and orchestration styles
296
+ - [Model Guide](/backend/model-guide) for persistence behavior and ORM-facing semantics
297
+ - [Entity Guide](/backend/entity-guide) for field metadata and entity design rules
298
+ - [DTO Guide](/backend/dto-guide) for DTO design, mapped-class tools, and inference choices
299
+ - [OpenAPI Guide](/backend/openapi-guide) for contract emission and downstream consumption
300
+ - [CRUD Workflow](/backend/crud-workflow) for generator-first creation of the backend thread
301
+
302
+ This page only owns the specimen-level question:
303
+
304
+ - how the layers connect
305
+ - where the generated metadata hub fits
306
+ - which file should you open next in one real module
307
+
308
+ ## Where to read next
309
+
310
+ - If you need the broader chooser page first, return to [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap).
311
+ - If you need more backend file-order reading paths, continue with [Vona Source Reading Map](/backend/vona-source-reading-map).
312
+ - If your next question is about DTO mechanics or derivation, continue with [DTO Guide](/backend/dto-guide) and [DTO Infer and Generation](/backend/dto-infer-generation).
313
+ - If your next question is about generator-created backend threads, continue with [CRUD Workflow](/backend/crud-workflow).
314
+ - If you want a proof-oriented or symptom-first companion for the backend source-reading path itself, continue with [Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook) and [Backend Source Reading Debug Checklist](/backend/backend-source-reading-debug-checklist).
315
+ - If your next question is about downstream contract emission, continue with [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map), [OpenAPI Guide](/backend/openapi-guide), and [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
316
+
317
+ ## Final takeaway
318
+
319
+ The fastest way to understand one Vona backend module accurately is not to jump straight from controller to ORM details.
320
+
321
+ Start from the public module entry, read the generated metadata hub early, then descend through controller -> service -> model -> entity -> DTO.
322
+
323
+ That reading order makes the contract chain visible as one connected backend surface instead of a set of isolated files.
@@ -0,0 +1,173 @@
1
+ # Backend Source Reading Debug Checklist
2
+
3
+ This page is a symptom-first diagnostic companion for one narrow backend question:
4
+
5
+ > something in the backend source-reading path looks wrong; which backend layer is the first failure?
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 Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook)
16
+
17
+ > [!TIP]
18
+ > **Backend source-reading diagnosis path**
19
+ >
20
+ > 1. **[Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap)** — choose the backend source-reading branch
21
+ > 2. **[Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook)** — use first when you want to prove the path layer by layer
22
+ > 3. **[Backend Source Reading Debug Checklist](/backend/backend-source-reading-debug-checklist)** — use this when something already looks wrong and you need the first failing layer
23
+ >
24
+ > **You are here:** step 3.
25
+ > **Previous recommended pages:** [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap) and [Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook).
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 family
35
+ - a proof-oriented verify playbook
36
+
37
+ What was still missing was one symptom-first page.
38
+
39
+ This page fills that gap.
40
+
41
+ It is not another concept page and not another source-order map. It is the checklist for isolating the first failing backend source-reading layer.
42
+
43
+ ## Shared symptom: generated/module surface missing or stale
44
+
45
+ Start here when the problem looks earlier than either the module-wiring branch or the emission branch.
46
+
47
+ Primary anchors:
48
+
49
+ - `vona/src/suite/a-training/modules/training-student/src/index.ts`
50
+ - `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
51
+
52
+ What to inspect first:
53
+
54
+ - does the module entry still re-export the generated surfaces you expect?
55
+ - does `.metadata/index.ts` still expose the expected generated registration surface at all?
56
+ - is the problem really in generated/module surface visibility rather than in authored controller/service/model/entity/DTO code?
57
+
58
+ If this layer is already wrong, do not continue into the branch-specific diagnosis yet.
59
+
60
+ ## Module-wiring branch symptoms
61
+
62
+ Only enter this branch when the issue is clearly about how one backend module is wired.
63
+
64
+ Primary anchors:
65
+
66
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
67
+ - `vona/src/suite/a-training/modules/training-student/src/service/student.ts`
68
+ - `vona/src/suite/a-training/modules/training-student/src/model/student.ts`
69
+ - `vona/src/suite/a-training/modules/training-student/src/entity/student.tsx`
70
+ - `vona/src/suite/a-training/modules/training-student/src/dto/*.tsx`
71
+
72
+ Typical failures to classify:
73
+
74
+ ### A. Controller/service/model/entity responsibilities no longer line up
75
+
76
+ Check:
77
+
78
+ - whether the controller still delegates through the expected service/model path
79
+ - whether the entity and DTO source truth still match the intended resource/module chain
80
+ - whether the module-wiring specimen page still reflects the actual code path
81
+
82
+ ### B. Generated registration no longer reflects the expected module/resource chain
83
+
84
+ Check:
85
+
86
+ - whether `.metadata/index.ts` still exposes the expected controller/model/service/entity/DTO registrations together
87
+ - whether the backend source-reading family is now out of sync with the actual generated module surface
88
+
89
+ If this branch remains unclear, return to [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain) before escalating further.
90
+
91
+ ## Emission branch symptoms
92
+
93
+ Only enter this branch when the issue is clearly about emitted backend contract truth.
94
+
95
+ Primary anchors:
96
+
97
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
98
+ - `vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx`
99
+ - `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
100
+ - emitted output surface already used in docs:
101
+ - `http://localhost:7102/swagger/json?version=V31`
102
+
103
+ Typical failures to classify:
104
+
105
+ ### A. Emitted path missing or stale
106
+
107
+ Check:
108
+
109
+ - whether the controller still declares the intended action path
110
+ - whether `.metadata/index.ts` still exposes the expected generated route record
111
+ - whether the emitted output still includes the expected path
112
+
113
+ ### B. Emitted DTO shape no longer matches expectation
114
+
115
+ Check:
116
+
117
+ - whether the named DTO still matches the intended response shape
118
+ - whether the emitted schema still reflects that DTO truth
119
+
120
+ ### C. Metadata record and emitted output no longer agree
121
+
122
+ Check:
123
+
124
+ - whether the generated registry and the emitted output diverged
125
+ - whether the issue is still backend-side and should not yet escalate to frontend bridge debugging
126
+
127
+ If this branch remains unclear, return to [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen) and [Backend Contract Emission Output Inspection](/backend/backend-contract-emission-output-inspection) before escalating further.
128
+
129
+ ## Classify the failure last
130
+
131
+ Only after the branch-local checks should you classify the problem as:
132
+
133
+ - shared generated/module surface issue
134
+ - module-wiring issue
135
+ - emission issue
136
+ - downstream bridge/generation issue
137
+
138
+ A practical rule is:
139
+
140
+ > do not jump into fullstack forward-bridge or frontend debugging until the backend source-reading path itself already looks correct.
141
+
142
+ ## What this page does not re-explain
143
+
144
+ This page deliberately does **not** re-teach:
145
+
146
+ - the conceptual backend overview -> see [Backend (Vona)](/backend/introduction)
147
+ - 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)
148
+ - the module-wiring specimen -> see [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
149
+ - the emission concept/specimen/map/output-inspection family
150
+ - the fullstack forward bridge -> see [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
151
+
152
+ Its job is only to help you isolate the first failing backend source-reading layer.
153
+
154
+ ## Where to read next
155
+
156
+ - If you need the chooser page first, return to [Backend Source Reading Roadmap](/backend/backend-source-reading-roadmap).
157
+ - If you need the broad file-order map first, continue with [Vona Source Reading Map](/backend/vona-source-reading-map).
158
+ - If you want the proof-oriented layer-by-layer workflow first, continue with [Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook).
159
+ - If the backend path now looks correct and you want the downstream bridge, hand off to [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
160
+ - If the backend path now looks correct but the real issue is one mixed Student row-action chain, hand off to [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions).
161
+ - If you are still unsure which contract direction or drift type actually applies, return to [Contract Loop Playbook](/fullstack/contract-loop-playbook).
162
+
163
+ ## Final takeaway
164
+
165
+ The cleanest way to debug a backend source-reading path is not to jump immediately into fullstack or frontend consumer debugging.
166
+
167
+ First isolate:
168
+
169
+ - whether the generated/module surface itself is present
170
+ - whether the failure belongs to the module-wiring branch or the emission branch
171
+ - whether the emitted output is wrong before it ever leaves the backend side
172
+
173
+ Only then hand off to the downstream bridge if you still need it.
@@ -0,0 +1,129 @@
1
+ # Backend Source Reading Roadmap
2
+
3
+ This page is a lightweight roadmap for reading the Cabloy Basic backend source.
4
+
5
+ Use it when your question is not yet “which exact source file should I open next?” but:
6
+
7
+ - where should I start reading Vona backend source?
8
+ - which backend topic cluster matches my question?
9
+ - should I begin with a concept guide or a source-reading map?
10
+
11
+ ## Why this page exists
12
+
13
+ The backend docs already explain the main Vona concepts well:
14
+
15
+ - backend architecture
16
+ - CLI and scripts
17
+ - controller / service / model / entity responsibilities
18
+ - runtime and distributed infrastructure
19
+
20
+ That is good for conceptual understanding, but it still leaves a common follow-up question:
21
+
22
+ > which backend page should I read next before I start opening framework or module source files?
23
+
24
+ This page solves that problem.
25
+
26
+ It is a chooser, not another backend runtime deep dive.
27
+
28
+ ## How to use this page
29
+
30
+ Use this rule of thumb:
31
+
32
+ - if you are new to the topic, start with the **concept guide** first
33
+ - if you already know the concept and want the shortest path into source, go to the **source-reading map**
34
+ - if you only need one backend specimen, choose the smallest topic cluster below and stop as soon as you have enough context
35
+
36
+ ## Architecture spine: start here first
37
+
38
+ If you need the shortest path into the backend mental model, start with these pages:
39
+
40
+ - [Backend (Vona)](/backend/introduction)
41
+ - [Backend Foundation](/backend/foundation)
42
+ - [Backend Essentials](/backend/backend-essentials)
43
+ - [Backend CLI](/backend/cli)
44
+ - [Backend Directory Structure](/reference/backend-directory-structure)
45
+
46
+ A practical reading order is:
47
+
48
+ 1. Backend (Vona)
49
+ 2. Backend Foundation
50
+ 3. Backend Essentials
51
+ 4. Backend CLI
52
+ 5. Backend Directory Structure
53
+
54
+ Then move to [Vona Source Reading Map](/backend/vona-source-reading-map) when you want the shortest file-order path into current source.
55
+
56
+ If your next question becomes “how do I prove or diagnose the backend source-reading path itself?”, continue with [Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook) and [Backend Source Reading Debug Checklist](/backend/backend-source-reading-debug-checklist).
57
+
58
+ ## Topic cluster: startup and CLI entry
59
+
60
+ Start here when your question is about:
61
+
62
+ - root backend entrypoints
63
+ - `npm run vona`
64
+ - CLI command families
65
+ - backend build or play entry surfaces
66
+
67
+ ### Concept pages first
68
+
69
+ - [Backend (Vona)](/backend/introduction)
70
+ - [Backend CLI](/backend/cli)
71
+ - [Backend Scripts](/backend/scripts)
72
+ - [Backend Directory Structure](/reference/backend-directory-structure)
73
+
74
+ ### Best next step
75
+
76
+ - if the question is “which root script enters the backend CLI?” -> read [Backend CLI](/backend/cli)
77
+ - if the question is “which scripts drive normal backend dev/build/start/test workflows?” -> read [Backend Scripts](/backend/scripts)
78
+ - if the question is “which source files should I open first?” -> read [Vona Source Reading Map](/backend/vona-source-reading-map)
79
+
80
+ ## Topic cluster: resource and module CRUD chain
81
+
82
+ Start here when your question is about:
83
+
84
+ - how one backend module is wired
85
+ - how controller, service, model, and entity responsibilities separate
86
+ - where generated metadata and API path registration live
87
+
88
+ ### Concept pages first
89
+
90
+ - [Controller Guide](/backend/controller-guide)
91
+ - [Service Guide](/backend/service-guide)
92
+ - [Model Guide](/backend/model-guide)
93
+ - [Entity Guide](/backend/entity-guide)
94
+ - [Backend Directory Structure](/reference/backend-directory-structure)
95
+
96
+ ### Best next step
97
+
98
+ - if the question is “what does each backend layer own?” -> read the concept guides above first
99
+ - if the question is “which concrete source files should I read in order?” -> read [Vona Source Reading Map](/backend/vona-source-reading-map)
100
+ - if the question becomes “how should I choose between explicit DTOs, inferred DTOs, and wrapped DTO helpers?” -> read [DTO Infer and Generation](/backend/dto-infer-generation)
101
+ - if the question becomes “how do controller, DTO, and entity metadata become emitted OpenAPI contract?” -> read [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen), then [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)
102
+ - if the question becomes “what was actually emitted on the output side?” -> continue with [Backend Contract Emission Output Inspection](/backend/backend-contract-emission-output-inspection)
103
+
104
+ ## What this roadmap intentionally does not cover yet
105
+
106
+ This first backend source-reading roadmap is intentionally narrow.
107
+
108
+ It does **not** try to become the new entry page for every backend subsystem such as:
109
+
110
+ - workers
111
+ - queues
112
+ - websockets
113
+ - auth
114
+ - cache
115
+ - distributed runtime internals
116
+
117
+ Those topics already have their own concept docs. This roadmap is only the first navigation layer for common source-reading tasks.
118
+
119
+ ## Final rule
120
+
121
+ When in doubt:
122
+
123
+ 1. start with the backend concept guide that matches your question
124
+ 2. use this roadmap to choose the right cluster
125
+ 3. only then move to [Vona Source Reading Map](/backend/vona-source-reading-map)
126
+
127
+ This roadmap is the chooser.
128
+
129
+ The detailed file-order reading path belongs to the source-reading map.