@akanjs/cli 0.0.142 → 0.0.144

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 (349) hide show
  1. package/README.md +8 -0
  2. package/cjs/index.js +2437 -3204
  3. package/cjs/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
  4. package/cjs/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  5. package/cjs/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
  6. package/cjs/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
  7. package/cjs/src/guidelines/componentRule/componentRule.instruction.md +732 -0
  8. package/cjs/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
  9. package/cjs/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  10. package/cjs/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
  11. package/cjs/src/guidelines/framework/framework.instruction.md +1112 -0
  12. package/cjs/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
  13. package/cjs/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
  14. package/cjs/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
  15. package/cjs/src/guidelines/modelService/modelService.instruction.md +935 -0
  16. package/cjs/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
  17. package/cjs/src/guidelines/modelStore/modelStore.instruction.md +591 -0
  18. package/cjs/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
  19. package/cjs/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
  20. package/cjs/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  21. package/cjs/src/guidelines/modelView/modelView.instruction.md +1005 -0
  22. package/cjs/src/guidelines/modelZone/modelZone.instruction.md +528 -0
  23. package/cjs/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
  24. package/cjs/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
  25. package/cjs/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
  26. package/cjs/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  27. package/cjs/src/templates/module/__model__.dictionary.js +4 -5
  28. package/esm/index.js +2524 -3286
  29. package/esm/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
  30. package/esm/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  31. package/esm/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
  32. package/esm/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
  33. package/esm/src/guidelines/componentRule/componentRule.instruction.md +732 -0
  34. package/esm/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
  35. package/esm/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  36. package/esm/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
  37. package/esm/src/guidelines/framework/framework.instruction.md +1112 -0
  38. package/esm/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
  39. package/esm/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
  40. package/esm/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
  41. package/esm/src/guidelines/modelService/modelService.instruction.md +935 -0
  42. package/esm/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
  43. package/esm/src/guidelines/modelStore/modelStore.instruction.md +591 -0
  44. package/esm/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
  45. package/esm/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
  46. package/esm/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  47. package/esm/src/guidelines/modelView/modelView.instruction.md +1005 -0
  48. package/esm/src/guidelines/modelZone/modelZone.instruction.md +528 -0
  49. package/esm/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
  50. package/esm/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
  51. package/esm/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
  52. package/esm/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  53. package/esm/src/templates/module/__model__.dictionary.js +4 -5
  54. package/package.json +3 -1
  55. package/src/guideline/guideline.command.d.ts +7 -0
  56. package/src/guideline/guideline.prompt.d.ts +15 -0
  57. package/src/guideline/guideline.runner.d.ts +5 -0
  58. package/src/guideline/guideline.script.d.ts +6 -0
  59. package/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
  60. package/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  61. package/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
  62. package/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
  63. package/src/guidelines/componentRule/componentRule.instruction.md +732 -0
  64. package/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
  65. package/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  66. package/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
  67. package/src/guidelines/framework/framework.instruction.md +1112 -0
  68. package/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
  69. package/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
  70. package/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
  71. package/src/guidelines/modelService/modelService.instruction.md +935 -0
  72. package/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
  73. package/src/guidelines/modelStore/modelStore.instruction.md +591 -0
  74. package/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
  75. package/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
  76. package/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  77. package/src/guidelines/modelView/modelView.instruction.md +1005 -0
  78. package/src/guidelines/modelZone/modelZone.instruction.md +528 -0
  79. package/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
  80. package/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
  81. package/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
  82. package/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  83. package/src/module/module.command.d.ts +6 -8
  84. package/src/module/module.prompt.d.ts +2 -15
  85. package/src/module/module.request.d.ts +22 -18
  86. package/src/module/module.runner.d.ts +4 -20
  87. package/src/module/module.script.d.ts +6 -7
  88. package/src/scalar/scalar.command.d.ts +7 -0
  89. package/src/scalar/scalar.prompt.d.ts +23 -0
  90. package/src/scalar/scalar.runner.d.ts +13 -0
  91. package/src/scalar/scalar.script.d.ts +6 -0
  92. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +0 -47
  93. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +0 -128
  94. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +0 -42
  95. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +0 -50
  96. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +0 -41
  97. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +0 -51
  98. package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +0 -43
  99. package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +0 -60
  100. package/cjs/src/templates/app/app/[lang]/(__appName__)/layout.js +0 -54
  101. package/cjs/src/templates/app/app/[lang]/(__appName__)/styles.css.template +0 -19
  102. package/cjs/src/templates/app/app/[lang]/admin/layout.js +0 -54
  103. package/cjs/src/templates/app/app/[lang]/admin/page.js +0 -63
  104. package/cjs/src/templates/app/app/csr.js +0 -34
  105. package/cjs/src/templates/app/app/index.html.template +0 -13
  106. package/cjs/src/templates/app/app/layout.js +0 -38
  107. package/cjs/src/templates/app/capacitor.config.ts.template +0 -8
  108. package/cjs/src/templates/app/env/env.client.debug.ts.template +0 -7
  109. package/cjs/src/templates/app/env/env.client.develop.ts.template +0 -7
  110. package/cjs/src/templates/app/env/env.client.local.ts.template +0 -7
  111. package/cjs/src/templates/app/env/env.client.main.ts.template +0 -7
  112. package/cjs/src/templates/app/env/env.client.testing.ts.template +0 -7
  113. package/cjs/src/templates/app/env/env.server.debug.ts.template +0 -15
  114. package/cjs/src/templates/app/env/env.server.develop.ts.template +0 -15
  115. package/cjs/src/templates/app/env/env.server.local.ts.template +0 -15
  116. package/cjs/src/templates/app/env/env.server.main.ts.template +0 -15
  117. package/cjs/src/templates/app/env/env.server.testing.ts.template +0 -7
  118. package/cjs/src/templates/app/lib/setting/Setting.Template.js +0 -57
  119. package/cjs/src/templates/app/lib/setting/Setting.Unit.js +0 -38
  120. package/cjs/src/templates/app/lib/setting/Setting.Util.js +0 -34
  121. package/cjs/src/templates/app/lib/setting/Setting.View.js +0 -51
  122. package/cjs/src/templates/app/lib/setting/Setting.Zone.js +0 -80
  123. package/cjs/src/templates/app/lib/setting/index.js +0 -61
  124. package/cjs/src/templates/app/lib/summary/Summary.Template.js +0 -43
  125. package/cjs/src/templates/app/lib/summary/Summary.Unit.js +0 -38
  126. package/cjs/src/templates/app/lib/summary/Summary.Util.js +0 -33
  127. package/cjs/src/templates/app/lib/summary/Summary.View.js +0 -51
  128. package/cjs/src/templates/app/lib/summary/Summary.Zone.js +0 -62
  129. package/cjs/src/templates/app/lib/summary/index.js +0 -67
  130. package/cjs/src/templates/app/lib/user/User.Template.js +0 -65
  131. package/cjs/src/templates/app/lib/user/User.Unit.js +0 -38
  132. package/cjs/src/templates/app/lib/user/User.Util.js +0 -94
  133. package/cjs/src/templates/app/lib/user/User.View.js +0 -66
  134. package/cjs/src/templates/app/lib/user/User.Zone.js +0 -74
  135. package/cjs/src/templates/app/lib/user/index.js +0 -61
  136. package/cjs/src/templates/app/page.test.ts.template +0 -10
  137. package/cjs/src/templates/app/playwright.config.ts.template +0 -6
  138. package/cjs/src/templates/app/postcss.config.js.template +0 -10
  139. package/cjs/src/templates/app/public/manifest.json.template +0 -67
  140. package/cjs/src/templates/app/tsconfig.json.template +0 -22
  141. package/cjs/src/templates/app/tsconfig.spec.json.template +0 -7
  142. package/cjs/src/templates/app/ui/Footer.js +0 -67
  143. package/cjs/src/templates/app/ui/MainHeader.js +0 -131
  144. package/cjs/src/templates/crudPages/[__model__Id]/edit/page.js +0 -73
  145. package/cjs/src/templates/crudPages/[__model__Id]/page.js +0 -83
  146. package/cjs/src/templates/crudPages/new/page.js +0 -70
  147. package/cjs/src/templates/crudPages/page.js +0 -71
  148. package/cjs/src/templates/libRoot/.gitignore.template +0 -15
  149. package/cjs/src/templates/libRoot/env/env.server.example.ts.template +0 -7
  150. package/cjs/src/templates/libRoot/env/env.server.testing.ts.template +0 -7
  151. package/cjs/src/templates/libRoot/lib/setting/Setting.Template.js +0 -57
  152. package/cjs/src/templates/libRoot/lib/setting/Setting.Unit.js +0 -38
  153. package/cjs/src/templates/libRoot/lib/setting/Setting.Util.js +0 -34
  154. package/cjs/src/templates/libRoot/lib/setting/Setting.View.js +0 -51
  155. package/cjs/src/templates/libRoot/lib/setting/Setting.Zone.js +0 -80
  156. package/cjs/src/templates/libRoot/lib/setting/index.js +0 -61
  157. package/cjs/src/templates/libRoot/lib/summary/Summary.Template.js +0 -43
  158. package/cjs/src/templates/libRoot/lib/summary/Summary.Unit.js +0 -38
  159. package/cjs/src/templates/libRoot/lib/summary/Summary.Util.js +0 -33
  160. package/cjs/src/templates/libRoot/lib/summary/Summary.View.js +0 -51
  161. package/cjs/src/templates/libRoot/lib/summary/Summary.Zone.js +0 -62
  162. package/cjs/src/templates/libRoot/lib/summary/index.js +0 -67
  163. package/cjs/src/templates/libRoot/lib/user/User.Template.js +0 -65
  164. package/cjs/src/templates/libRoot/lib/user/User.Unit.js +0 -38
  165. package/cjs/src/templates/libRoot/lib/user/User.Util.js +0 -94
  166. package/cjs/src/templates/libRoot/lib/user/User.View.js +0 -66
  167. package/cjs/src/templates/libRoot/lib/user/User.Zone.js +0 -74
  168. package/cjs/src/templates/libRoot/lib/user/index.js +0 -61
  169. package/cjs/src/templates/libRoot/package.json.template +0 -4
  170. package/cjs/src/templates/libRoot/tsconfig.json.template +0 -13
  171. package/cjs/src/templates/libRoot/tsconfig.spec.json.template +0 -7
  172. package/cjs/src/templates/localDev/docker-compose.yaml.template +0 -36
  173. package/cjs/src/templates/module/__Model__.Template.js +0 -54
  174. package/cjs/src/templates/module/__Model__.Unit.js +0 -42
  175. package/cjs/src/templates/module/__Model__.Util.js +0 -70
  176. package/cjs/src/templates/module/__Model__.View.js +0 -48
  177. package/cjs/src/templates/module/__Model__.Zone.js +0 -83
  178. package/cjs/src/templates/module/index.js +0 -61
  179. package/cjs/src/templates/pkgRoot/tsconfig.json.template +0 -15
  180. package/cjs/src/templates/workspaceRoot/.env.template +0 -20
  181. package/cjs/src/templates/workspaceRoot/.gitignore.template +0 -118
  182. package/cjs/src/templates/workspaceRoot/.prettierignore.template +0 -10
  183. package/cjs/src/templates/workspaceRoot/.prettierrc.json.template +0 -6
  184. package/cjs/src/templates/workspaceRoot/.swcrc.template +0 -9
  185. package/cjs/src/templates/workspaceRoot/.vscode/settings.json.template +0 -13
  186. package/cjs/src/templates/workspaceRoot/README.md.template +0 -37
  187. package/cjs/src/templates/workspaceRoot/eslint.config.ts.template +0 -3
  188. package/cjs/src/templates/workspaceRoot/package.json.template +0 -43
  189. package/cjs/src/templates/workspaceRoot/tsconfig.json.template +0 -29
  190. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +0 -27
  191. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +0 -108
  192. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +0 -22
  193. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +0 -30
  194. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +0 -21
  195. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +0 -31
  196. package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +0 -23
  197. package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +0 -40
  198. package/esm/src/templates/app/app/[lang]/(__appName__)/layout.js +0 -34
  199. package/esm/src/templates/app/app/[lang]/(__appName__)/styles.css.template +0 -19
  200. package/esm/src/templates/app/app/[lang]/admin/layout.js +0 -34
  201. package/esm/src/templates/app/app/[lang]/admin/page.js +0 -43
  202. package/esm/src/templates/app/app/csr.js +0 -14
  203. package/esm/src/templates/app/app/index.html.template +0 -13
  204. package/esm/src/templates/app/app/layout.js +0 -18
  205. package/esm/src/templates/app/capacitor.config.ts.template +0 -8
  206. package/esm/src/templates/app/env/env.client.debug.ts.template +0 -7
  207. package/esm/src/templates/app/env/env.client.develop.ts.template +0 -7
  208. package/esm/src/templates/app/env/env.client.local.ts.template +0 -7
  209. package/esm/src/templates/app/env/env.client.main.ts.template +0 -7
  210. package/esm/src/templates/app/env/env.client.testing.ts.template +0 -7
  211. package/esm/src/templates/app/env/env.server.debug.ts.template +0 -15
  212. package/esm/src/templates/app/env/env.server.develop.ts.template +0 -15
  213. package/esm/src/templates/app/env/env.server.local.ts.template +0 -15
  214. package/esm/src/templates/app/env/env.server.main.ts.template +0 -15
  215. package/esm/src/templates/app/env/env.server.testing.ts.template +0 -7
  216. package/esm/src/templates/app/lib/setting/Setting.Template.js +0 -37
  217. package/esm/src/templates/app/lib/setting/Setting.Unit.js +0 -18
  218. package/esm/src/templates/app/lib/setting/Setting.Util.js +0 -14
  219. package/esm/src/templates/app/lib/setting/Setting.View.js +0 -31
  220. package/esm/src/templates/app/lib/setting/Setting.Zone.js +0 -60
  221. package/esm/src/templates/app/lib/setting/index.js +0 -41
  222. package/esm/src/templates/app/lib/summary/Summary.Template.js +0 -23
  223. package/esm/src/templates/app/lib/summary/Summary.Unit.js +0 -18
  224. package/esm/src/templates/app/lib/summary/Summary.Util.js +0 -13
  225. package/esm/src/templates/app/lib/summary/Summary.View.js +0 -31
  226. package/esm/src/templates/app/lib/summary/Summary.Zone.js +0 -42
  227. package/esm/src/templates/app/lib/summary/index.js +0 -47
  228. package/esm/src/templates/app/lib/user/User.Template.js +0 -45
  229. package/esm/src/templates/app/lib/user/User.Unit.js +0 -18
  230. package/esm/src/templates/app/lib/user/User.Util.js +0 -74
  231. package/esm/src/templates/app/lib/user/User.View.js +0 -46
  232. package/esm/src/templates/app/lib/user/User.Zone.js +0 -54
  233. package/esm/src/templates/app/lib/user/index.js +0 -41
  234. package/esm/src/templates/app/page.test.ts.template +0 -10
  235. package/esm/src/templates/app/playwright.config.ts.template +0 -6
  236. package/esm/src/templates/app/postcss.config.js.template +0 -10
  237. package/esm/src/templates/app/public/manifest.json.template +0 -67
  238. package/esm/src/templates/app/tsconfig.json.template +0 -22
  239. package/esm/src/templates/app/tsconfig.spec.json.template +0 -7
  240. package/esm/src/templates/app/ui/Footer.js +0 -47
  241. package/esm/src/templates/app/ui/MainHeader.js +0 -111
  242. package/esm/src/templates/crudPages/[__model__Id]/edit/page.js +0 -53
  243. package/esm/src/templates/crudPages/[__model__Id]/page.js +0 -63
  244. package/esm/src/templates/crudPages/new/page.js +0 -50
  245. package/esm/src/templates/crudPages/page.js +0 -51
  246. package/esm/src/templates/libRoot/.gitignore.template +0 -15
  247. package/esm/src/templates/libRoot/env/env.server.example.ts.template +0 -7
  248. package/esm/src/templates/libRoot/env/env.server.testing.ts.template +0 -7
  249. package/esm/src/templates/libRoot/lib/setting/Setting.Template.js +0 -37
  250. package/esm/src/templates/libRoot/lib/setting/Setting.Unit.js +0 -18
  251. package/esm/src/templates/libRoot/lib/setting/Setting.Util.js +0 -14
  252. package/esm/src/templates/libRoot/lib/setting/Setting.View.js +0 -31
  253. package/esm/src/templates/libRoot/lib/setting/Setting.Zone.js +0 -60
  254. package/esm/src/templates/libRoot/lib/setting/index.js +0 -41
  255. package/esm/src/templates/libRoot/lib/summary/Summary.Template.js +0 -23
  256. package/esm/src/templates/libRoot/lib/summary/Summary.Unit.js +0 -18
  257. package/esm/src/templates/libRoot/lib/summary/Summary.Util.js +0 -13
  258. package/esm/src/templates/libRoot/lib/summary/Summary.View.js +0 -31
  259. package/esm/src/templates/libRoot/lib/summary/Summary.Zone.js +0 -42
  260. package/esm/src/templates/libRoot/lib/summary/index.js +0 -47
  261. package/esm/src/templates/libRoot/lib/user/User.Template.js +0 -45
  262. package/esm/src/templates/libRoot/lib/user/User.Unit.js +0 -18
  263. package/esm/src/templates/libRoot/lib/user/User.Util.js +0 -74
  264. package/esm/src/templates/libRoot/lib/user/User.View.js +0 -46
  265. package/esm/src/templates/libRoot/lib/user/User.Zone.js +0 -54
  266. package/esm/src/templates/libRoot/lib/user/index.js +0 -41
  267. package/esm/src/templates/libRoot/package.json.template +0 -4
  268. package/esm/src/templates/libRoot/tsconfig.json.template +0 -13
  269. package/esm/src/templates/libRoot/tsconfig.spec.json.template +0 -7
  270. package/esm/src/templates/localDev/docker-compose.yaml.template +0 -36
  271. package/esm/src/templates/module/__Model__.Template.js +0 -34
  272. package/esm/src/templates/module/__Model__.Unit.js +0 -22
  273. package/esm/src/templates/module/__Model__.Util.js +0 -50
  274. package/esm/src/templates/module/__Model__.View.js +0 -28
  275. package/esm/src/templates/module/__Model__.Zone.js +0 -63
  276. package/esm/src/templates/module/index.js +0 -41
  277. package/esm/src/templates/pkgRoot/tsconfig.json.template +0 -15
  278. package/esm/src/templates/workspaceRoot/.env.template +0 -20
  279. package/esm/src/templates/workspaceRoot/.gitignore.template +0 -118
  280. package/esm/src/templates/workspaceRoot/.prettierignore.template +0 -10
  281. package/esm/src/templates/workspaceRoot/.prettierrc.json.template +0 -6
  282. package/esm/src/templates/workspaceRoot/.swcrc.template +0 -9
  283. package/esm/src/templates/workspaceRoot/.vscode/settings.json.template +0 -13
  284. package/esm/src/templates/workspaceRoot/README.md.template +0 -37
  285. package/esm/src/templates/workspaceRoot/eslint.config.ts.template +0 -3
  286. package/esm/src/templates/workspaceRoot/package.json.template +0 -43
  287. package/esm/src/templates/workspaceRoot/tsconfig.json.template +0 -29
  288. package/src/application/application.prompt.d.ts +0 -2
  289. package/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.d.ts +0 -9
  290. package/src/templates/app/app/[lang]/(__appName__)/(public)/page.d.ts +0 -9
  291. package/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.d.ts +0 -9
  292. package/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.d.ts +0 -9
  293. package/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.d.ts +0 -10
  294. package/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.d.ts +0 -9
  295. package/src/templates/app/app/[lang]/(__appName__)/(user)/layout.d.ts +0 -9
  296. package/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.d.ts +0 -9
  297. package/src/templates/app/app/[lang]/(__appName__)/layout.d.ts +0 -9
  298. package/src/templates/app/app/[lang]/admin/layout.d.ts +0 -9
  299. package/src/templates/app/app/[lang]/admin/page.d.ts +0 -9
  300. package/src/templates/app/app/csr.d.ts +0 -9
  301. package/src/templates/app/app/layout.d.ts +0 -9
  302. package/src/templates/app/lib/setting/Setting.Template.d.ts +0 -9
  303. package/src/templates/app/lib/setting/Setting.Unit.d.ts +0 -9
  304. package/src/templates/app/lib/setting/Setting.Util.d.ts +0 -9
  305. package/src/templates/app/lib/setting/Setting.View.d.ts +0 -9
  306. package/src/templates/app/lib/setting/Setting.Zone.d.ts +0 -9
  307. package/src/templates/app/lib/setting/index.d.ts +0 -9
  308. package/src/templates/app/lib/summary/Summary.Template.d.ts +0 -9
  309. package/src/templates/app/lib/summary/Summary.Unit.d.ts +0 -9
  310. package/src/templates/app/lib/summary/Summary.Util.d.ts +0 -9
  311. package/src/templates/app/lib/summary/Summary.View.d.ts +0 -9
  312. package/src/templates/app/lib/summary/Summary.Zone.d.ts +0 -9
  313. package/src/templates/app/lib/summary/index.d.ts +0 -9
  314. package/src/templates/app/lib/user/User.Template.d.ts +0 -9
  315. package/src/templates/app/lib/user/User.Unit.d.ts +0 -9
  316. package/src/templates/app/lib/user/User.Util.d.ts +0 -9
  317. package/src/templates/app/lib/user/User.View.d.ts +0 -9
  318. package/src/templates/app/lib/user/User.Zone.d.ts +0 -9
  319. package/src/templates/app/lib/user/index.d.ts +0 -9
  320. package/src/templates/app/ui/Footer.d.ts +0 -9
  321. package/src/templates/app/ui/MainHeader.d.ts +0 -10
  322. package/src/templates/crudPages/[__model__Id]/edit/page.d.ts +0 -11
  323. package/src/templates/crudPages/[__model__Id]/page.d.ts +0 -11
  324. package/src/templates/crudPages/new/page.d.ts +0 -11
  325. package/src/templates/crudPages/page.d.ts +0 -11
  326. package/src/templates/libRoot/lib/setting/Setting.Template.d.ts +0 -9
  327. package/src/templates/libRoot/lib/setting/Setting.Unit.d.ts +0 -9
  328. package/src/templates/libRoot/lib/setting/Setting.Util.d.ts +0 -9
  329. package/src/templates/libRoot/lib/setting/Setting.View.d.ts +0 -9
  330. package/src/templates/libRoot/lib/setting/Setting.Zone.d.ts +0 -9
  331. package/src/templates/libRoot/lib/setting/index.d.ts +0 -9
  332. package/src/templates/libRoot/lib/summary/Summary.Template.d.ts +0 -9
  333. package/src/templates/libRoot/lib/summary/Summary.Unit.d.ts +0 -9
  334. package/src/templates/libRoot/lib/summary/Summary.Util.d.ts +0 -9
  335. package/src/templates/libRoot/lib/summary/Summary.View.d.ts +0 -9
  336. package/src/templates/libRoot/lib/summary/Summary.Zone.d.ts +0 -9
  337. package/src/templates/libRoot/lib/summary/index.d.ts +0 -9
  338. package/src/templates/libRoot/lib/user/User.Template.d.ts +0 -9
  339. package/src/templates/libRoot/lib/user/User.Unit.d.ts +0 -9
  340. package/src/templates/libRoot/lib/user/User.Util.d.ts +0 -9
  341. package/src/templates/libRoot/lib/user/User.View.d.ts +0 -9
  342. package/src/templates/libRoot/lib/user/User.Zone.d.ts +0 -9
  343. package/src/templates/libRoot/lib/user/index.d.ts +0 -9
  344. package/src/templates/module/__Model__.Template.d.ts +0 -11
  345. package/src/templates/module/__Model__.Unit.d.ts +0 -11
  346. package/src/templates/module/__Model__.Util.d.ts +0 -11
  347. package/src/templates/module/__Model__.View.d.ts +0 -11
  348. package/src/templates/module/__Model__.Zone.d.ts +0 -11
  349. package/src/templates/module/index.d.ts +0 -11
@@ -0,0 +1,583 @@
1
+ # Akan.js Model Dictionary Guide (`model.dictionary.ts`)
2
+
3
+ ## 1. Purpose
4
+
5
+ The `model.dictionary.ts` file serves as a centralized translation management system for your Akan.js applications, providing:
6
+
7
+ - **Multilingual UI Text**: Labels, buttons, tooltips, and messages
8
+ - **Field Translations**: Model field names and descriptions
9
+ - **API Documentation**: Endpoint names and parameter descriptions
10
+ - **Enum Translations**: Consistent terminology for status values and options
11
+ - **Error Messages**: Standardized error text for validation and business logic
12
+ - **Filter Query UI**: Search and filter interface elements
13
+
14
+ This system ensures consistent terminology across all application layers and supports multiple languages.
15
+
16
+ ---
17
+
18
+ ## 2. File Structure
19
+
20
+ ```typescript
21
+ import {
22
+ ModelDictionary,
23
+ SignalDictionary,
24
+ SummaryDictionary,
25
+ baseTrans,
26
+ getBaseSignalTrans,
27
+ } from "@akanjs/dictionary";
28
+
29
+ import type { YourModel, YourFilter, YourInsight, YourSummary } from "./your-model.constant";
30
+ import type { YourSignal } from "./your-model.signal";
31
+
32
+ // Core model translations
33
+ const modelDictionary = {
34
+ ...baseTrans, // Include base translations (id, createdAt, etc.)
35
+ modelName: ["Model Name", "모델명"],
36
+ modelDesc: ["Model description", "모델 설명"],
37
+
38
+ // * ==================== Model ==================== * //
39
+ fieldName: ["Field Label", "필드 라벨"],
40
+ "desc-fieldName": ["Field description", "필드 설명"],
41
+ // * ==================== Model ==================== * //
42
+
43
+ // * ==================== Insight ==================== * //
44
+ count: ["Count", "개수"],
45
+ "desc-count": ["Item count in current query", "현재 쿼리 설정에 맞는 항목 수"],
46
+ // * ==================== Insight ==================== * //
47
+
48
+ // * ==================== Filter ==================== * //
49
+ "qry-filterName": ["Filter Label", "필터 라벨"],
50
+ "qrydesc-filterName": ["Filter description", "필터 설명"],
51
+ "qarg-filterName-arg": ["Argument Label", "인자 라벨"],
52
+ "qargdesc-filterName-arg": ["Argument description", "인자 설명"],
53
+ // * ==================== Filter ==================== * //
54
+
55
+ // * ==================== Etc ==================== * //
56
+ "enum-field-value": ["Enum Label", "열거형 라벨"],
57
+ "enumdesc-field-value": ["Enum description", "열거형 설명"],
58
+ customKey: ["Custom text", "사용자 정의 텍스트"],
59
+ // * ==================== Etc ==================== * //
60
+ } satisfies ModelDictionary<YourModel, YourInsight, YourFilter>;
61
+
62
+ // Summary model translations (optional)
63
+ export const yourSummaryDictionary = {
64
+ // * ==================== Summary ==================== * //
65
+ totalItems: ["Total Items", "총 항목 수"],
66
+ "desc-totalItems": ["Total item count in database", "데이터베이스의 총 항목 수"],
67
+ // * ==================== Summary ==================== * //
68
+ } satisfies SummaryDictionary<YourSummary>;
69
+
70
+ // API endpoint translations
71
+ const signalDictionary = {
72
+ ...getBaseSignalTrans("modelName"), // Auto-generate standard API texts
73
+
74
+ // * ==================== Endpoint ==================== * //
75
+ "api-customEndpoint": ["Endpoint Label", "엔드포인트 라벨"],
76
+ "apidesc-customEndpoint": ["Endpoint description", "엔드포인트 설명"],
77
+ "arg-customEndpoint-arg": ["Argument Label", "인자 라벨"],
78
+ "argdesc-customEndpoint-arg": ["Argument description", "인자 설명"],
79
+ // * ==================== Endpoint ==================== * //
80
+ } satisfies SignalDictionary<YourSignal, YourModel>;
81
+
82
+ // Combined export
83
+ export const yourDictionary = { ...modelDictionary, ...signalDictionary };
84
+ ```
85
+
86
+ ---
87
+
88
+ ## 3. Translation Key Convention
89
+
90
+ All translations follow a structured naming pattern:
91
+
92
+ | Key Type | Pattern | Example | Required |
93
+ | ----------------------- | ------------------------------ | --------------------------- | -------- |
94
+ | **Model Name** | `modelName` | `modelName` | ✅ |
95
+ | **Model Description** | `modelDesc` | `modelDesc` | ✅ |
96
+ | **Field Label** | `fieldName` | `email` | ✅ |
97
+ | **Field Description** | `desc-fieldName` | `desc-email` | ✅ |
98
+ | **Enum Value** | `enum-{field}-{value}` | `enum-status-active` | ✅ |
99
+ | **Enum Description** | `enumdesc-{field}-{value}` | `enumdesc-status-active` | ✅ |
100
+ | **Filter Query** | `qry-{filterName}` | `qry-byStatus` | ✅ |
101
+ | **Filter Description** | `qrydesc-{filterName}` | `qrydesc-byStatus` | ✅ |
102
+ | **Filter Argument** | `qarg-{filterName}-{arg}` | `qarg-byStatus-status` | ✅ |
103
+ | **Filter Arg Desc** | `qargdesc-{filterName}-{arg}` | `qargdesc-byStatus-status` | ✅ |
104
+ | **API Endpoint** | `api-{endpointName}` | `api-updateUser` | ✅ |
105
+ | **API Description** | `apidesc-{endpointName}` | `apidesc-updateUser` | ✅ |
106
+ | **API Argument** | `arg-{endpointName}-{argName}` | `arg-updateUser-userId` | ✅ |
107
+ | **API Arg Description** | `argdesc-{endpoint}-{arg}` | `argdesc-updateUser-userId` | ✅ |
108
+ | **Custom UI Text** | `customKey` | `deleteConfirm` | ➖ |
109
+
110
+ ### Translation Array Format
111
+
112
+ Each translation is an array with entries for each supported language:
113
+
114
+ ```typescript
115
+ // [English, Korean]
116
+ fieldName: ["Field Name", "필드 이름"],
117
+
118
+ // With description
119
+ "desc-fieldName": ["Field description", "필드 설명"],
120
+ ```
121
+
122
+ ---
123
+
124
+ ## 4. How to Add Model Translations
125
+
126
+ ### Model Fields
127
+
128
+ Every model field requires both a label and description:
129
+
130
+ ```typescript
131
+ // * ==================== Model ==================== * //
132
+ title: ["Title", "제목"],
133
+ "desc-title": ["Content title", "콘텐츠 제목"],
134
+
135
+ description: ["Description", "설명"],
136
+ "desc-description": ["Content description", "콘텐츠 설명"],
137
+
138
+ author: ["Author", "작성자"],
139
+ "desc-author": ["Content creator", "콘텐츠 작성자"],
140
+ // * ==================== Model ==================== * //
141
+ ```
142
+
143
+ ### Summary Translations
144
+
145
+ Summary statistics and aggregated metrics:
146
+
147
+ ```typescript
148
+ // * ==================== Summary ==================== * //
149
+ totalUsers: ["Total Users", "총 사용자 수"],
150
+ "desc-totalUsers": ["Total registered users", "등록된 총 사용자 수"],
151
+
152
+ activeUsers: ["Active Users", "활성 사용자 수"],
153
+ "desc-activeUsers": ["Users active in last 7 days", "최근 7일간 활성 사용자 수"],
154
+ // * ==================== Summary ==================== * //
155
+ ```
156
+
157
+ ### Signal Translations
158
+
159
+ API endpoint names, descriptions and parameters:
160
+
161
+ ```typescript
162
+ // * ==================== Endpoint ==================== * //
163
+ "api-fetchRecent": ["Fetch Recent", "최근 데이터 조회"],
164
+ "apidesc-fetchRecent": ["Get recently modified items", "최근 수정된 항목 조회"],
165
+ "arg-fetchRecent-days": ["Days", "일 수"],
166
+ "argdesc-fetchRecent-days": ["Number of days to look back", "조회할 과거 일 수"],
167
+ // * ==================== Endpoint ==================== * //
168
+ ```
169
+
170
+ ### Enum Translations
171
+
172
+ For dropdown options, status values, and other enumerated types:
173
+
174
+ ```typescript
175
+ // * ==================== Etc ==================== * //
176
+ "enum-status-active": ["Active", "활성"],
177
+ "enumdesc-status-active": ["Item is visible and usable", "항목이 표시되고 사용 가능함"],
178
+
179
+ "enum-status-inactive": ["Inactive", "비활성"],
180
+ "enumdesc-status-inactive": ["Item is hidden but exists", "항목이 숨겨져 있지만 존재함"],
181
+
182
+ "enum-role-admin": ["Administrator", "관리자"],
183
+ "enumdesc-role-admin": ["Full system access", "시스템 전체 접근 권한"],
184
+ // * ==================== Etc ==================== * //
185
+ ```
186
+
187
+ ---
188
+
189
+ ## 5. How to Add Filter Query Translations
190
+
191
+ Filter queries need labels, descriptions, and argument translations:
192
+
193
+ ```typescript
194
+ // * ==================== Filter ==================== * //
195
+ "qry-byStatus": ["By Status", "상태별 조회"],
196
+ "qrydesc-byStatus": ["Filter items by status", "상태별로 항목 필터링"],
197
+ "qarg-byStatus-status": ["Status", "상태"],
198
+ "qargdesc-byStatus-status": ["Status value to filter by", "필터링할 상태 값"],
199
+
200
+ "qry-byCreator": ["By Creator", "작성자별 조회"],
201
+ "qrydesc-byCreator": ["Filter items by creator", "작성자별로 항목 필터링"],
202
+ "qarg-byCreator-userId": ["User ID", "사용자 ID"],
203
+ "qargdesc-byCreator-userId": ["Creator's user ID", "작성자의 사용자 ID"],
204
+ // * ==================== Filter ==================== * //
205
+ ```
206
+
207
+ For each filter:
208
+
209
+ 1. Define the filter query name (`qry-filterName`)
210
+ 2. Add a filter description (`qrydesc-filterName`)
211
+ 3. For each argument:
212
+ - Add argument label (`qarg-filterName-argName`)
213
+ - Add argument description (`qargdesc-filterName-argName`)
214
+
215
+ ---
216
+
217
+ ## 6. Extended Model Patterns
218
+
219
+ For special models like users, settings, or summaries:
220
+
221
+ ### User Extensions
222
+
223
+ ```typescript
224
+ // Extended user-specific fields
225
+ const userDictionary = {
226
+ // * ==================== Model ==================== * //
227
+ lastLogin: ["Last Login", "마지막 로그인"],
228
+ "desc-lastLogin": ["User's last login time", "사용자 마지막 로그인 시간"],
229
+
230
+ accountStatus: ["Account Status", "계정 상태"],
231
+ "desc-accountStatus": ["Current account status", "현재 계정 상태"],
232
+ // * ==================== Model ==================== * //
233
+
234
+ // * ==================== Etc ==================== * //
235
+ "enum-accountStatus-active": ["Active", "활성"],
236
+ "enumdesc-accountStatus-active": ["Account is usable", "계정이 사용 가능함"],
237
+
238
+ "enum-accountStatus-suspended": ["Suspended", "정지됨"],
239
+ "enumdesc-accountStatus-suspended": ["Account is temporarily disabled", "계정이 일시적으로 비활성화됨"],
240
+ // * ==================== Etc ==================== * //
241
+ } satisfies ExtendModelDictionary<User>;
242
+ ```
243
+
244
+ ### Settings Model
245
+
246
+ ```typescript
247
+ // Settings-specific translations
248
+ const settingDictionary = {
249
+ // * ==================== Model ==================== * //
250
+ darkMode: ["Dark Mode", "다크 모드"],
251
+ "desc-darkMode": ["Enable dark theme", "다크 테마 사용"],
252
+
253
+ notificationLevel: ["Notification Level", "알림 수준"],
254
+ "desc-notificationLevel": ["Control notification frequency", "알림 빈도 제어"],
255
+ // * ==================== Model ==================== * //
256
+
257
+ // * ==================== Etc ==================== * //
258
+ "enum-notificationLevel-all": ["All", "모두"],
259
+ "enumdesc-notificationLevel-all": ["Receive all notifications", "모든 알림 수신"],
260
+
261
+ "enum-notificationLevel-important": ["Important Only", "중요한 것만"],
262
+ "enumdesc-notificationLevel-important": ["Only receive important alerts", "중요한 알림만 수신"],
263
+ // * ==================== Etc ==================== * //
264
+ } satisfies ExtendModelDictionary<Setting>;
265
+ ```
266
+
267
+ ---
268
+
269
+ ## 7. Validation Rules and Checklist
270
+
271
+ ### Automated Validation
272
+
273
+ Run in development to check dictionary completeness:
274
+
275
+ ```bash
276
+ akan dict:check
277
+ ```
278
+
279
+ This validates:
280
+
281
+ 1. All model fields have matching descriptions
282
+ 2. All enum values have translations
283
+ 3. All API arguments have descriptions
284
+ 4. All filter arguments have descriptions
285
+ 5. No orphaned/unused translations
286
+
287
+ ### Manual Checklist
288
+
289
+ Before committing your dictionary, verify:
290
+
291
+ - [ ] Section comments (`// * ==================== * //`) are maintained
292
+ - [ ] All model fields have matching `desc-` entries
293
+ - [ ] All enums have both value and description entries
294
+ - [ ] All filters have proper query, description, argument, and argument description entries
295
+ - [ ] All API endpoints have proper endpoint, description, argument, and argument description entries
296
+ - [ ] Translation arrays follow consistent language order (English first, Korean second)
297
+ - [ ] Signal arguments match backend definitions
298
+ - [ ] Filter arguments match model definitions
299
+ - [ ] Enum values match model definitions
300
+
301
+ ---
302
+
303
+ ## 8. Common Mistakes and How to Fix
304
+
305
+ | Mistake | Symptom | Fix |
306
+ | ----------------------------- | --------------------------------- | ---------------------------------------------- |
307
+ | Missing field description | Dictionary validation errors | Add `"desc-fieldName"` entry |
308
+ | Missing enum description | Tooltips show keys not values | Add `"enumdesc-field-value"` entry |
309
+ | Missing filter arg desc | Filter UI shows raw keys | Add `"qargdesc-filter-arg"` entry |
310
+ | Missing API arg desc | API docs show raw parameter names | Add `"argdesc-endpoint-arg"` entry |
311
+ | Inconsistent section comments | Hard to navigate code | Use standard `// * ===== * //` format |
312
+ | Orphaned translations | Validation warnings | Remove unused keys or add missing fields |
313
+ | Translation array order | Incorrect language display | Maintain consistent order: `[English, Korean]` |
314
+
315
+ ### Example Fixes:
316
+
317
+ ```typescript
318
+ // INCORRECT - Missing description
319
+ title: ["Title", "제목"],
320
+
321
+ // CORRECT
322
+ title: ["Title", "제목"],
323
+ "desc-title": ["Item title", "항목 제목"],
324
+
325
+ // INCORRECT - Missing enum description
326
+ "enum-status-active": ["Active", "활성"],
327
+
328
+ // CORRECT
329
+ "enum-status-active": ["Active", "활성"],
330
+ "enumdesc-status-active": ["Item is visible and usable", "항목이 표시되고 사용 가능함"],
331
+ ```
332
+
333
+ ---
334
+
335
+ ## 9. Required Imports
336
+
337
+ Always include these imports in your dictionary file:
338
+
339
+ ```typescript
340
+ // Dictionary system imports
341
+ import {
342
+ ModelDictionary,
343
+ SignalDictionary,
344
+ SummaryDictionary,
345
+ ExtendModelDictionary, // For extended models
346
+ baseTrans, // Common translations
347
+ getBaseSignalTrans, // Auto-generated API translations
348
+ } from "@akanjs/dictionary";
349
+
350
+ // Model type imports
351
+ import type { YourModel, YourFilter, YourInsight } from "./your-model.constant";
352
+ import type { YourSignal } from "./your-model.signal";
353
+ import type { YourSummary } from "./your-model.summary"; // If using summary
354
+ ```
355
+
356
+ ---
357
+
358
+ ## 10. Full Example of model.dictionary.ts
359
+
360
+ ```typescript
361
+ import {
362
+ ModelDictionary,
363
+ SignalDictionary,
364
+ SummaryDictionary,
365
+ baseTrans,
366
+ getBaseSignalTrans,
367
+ } from "@akanjs/dictionary";
368
+
369
+ import type { Post, PostFilter, PostInsight } from "./post.constant";
370
+ import type { PostSignal } from "./post.signal";
371
+ import type { PostSummary } from "./post.summary";
372
+
373
+ const modelDictionary = {
374
+ ...baseTrans,
375
+ modelName: ["Post", "게시물"],
376
+ modelDesc: ["Blog or forum post content", "블로그 또는 포럼 게시물 콘텐츠"],
377
+
378
+ // * ==================== Model ==================== * //
379
+ title: ["Title", "제목"],
380
+ "desc-title": ["Post headline", "게시물 제목"],
381
+
382
+ content: ["Content", "내용"],
383
+ "desc-content": ["Post body text", "게시물 본문 텍스트"],
384
+
385
+ author: ["Author", "작성자"],
386
+ "desc-author": ["Post creator", "게시물 작성자"],
387
+
388
+ category: ["Category", "카테고리"],
389
+ "desc-category": ["Content classification", "콘텐츠 분류"],
390
+
391
+ tags: ["Tags", "태그"],
392
+ "desc-tags": ["Content labels", "콘텐츠 라벨"],
393
+
394
+ viewCount: ["Views", "조회수"],
395
+ "desc-viewCount": ["Number of post views", "게시물 조회 수"],
396
+
397
+ commentCount: ["Comments", "댓글수"],
398
+ "desc-commentCount": ["Number of comments", "댓글 수"],
399
+ // * ==================== Model ==================== * //
400
+
401
+ // * ==================== Insight ==================== * //
402
+ count: ["Count", "개수"],
403
+ "desc-count": ["Post count in current query", "현재 쿼리의 게시물 수"],
404
+
405
+ avgViewCount: ["Average Views", "평균 조회수"],
406
+ "desc-avgViewCount": ["Average view count per post", "게시물당 평균 조회 수"],
407
+ // * ==================== Insight ==================== * //
408
+
409
+ // * ==================== Filter ==================== * //
410
+ "qry-byAuthor": ["By Author", "작성자별 조회"],
411
+ "qrydesc-byAuthor": ["Filter posts by author", "작성자별로 게시물 필터링"],
412
+ "qarg-byAuthor-authorId": ["Author ID", "작성자 ID"],
413
+ "qargdesc-byAuthor-authorId": ["Author's user ID", "작성자의 사용자 ID"],
414
+
415
+ "qry-byCategory": ["By Category", "카테고리별 조회"],
416
+ "qrydesc-byCategory": ["Filter posts by category", "카테고리별로 게시물 필터링"],
417
+ "qarg-byCategory-categoryId": ["Category ID", "카테고리 ID"],
418
+ "qargdesc-byCategory-categoryId": ["Category identifier", "카테고리 식별자"],
419
+
420
+ "qry-byTags": ["By Tags", "태그별 조회"],
421
+ "qrydesc-byTags": ["Filter posts by tags", "태그별로 게시물 필터링"],
422
+ "qarg-byTags-tags": ["Tags", "태그"],
423
+ "qargdesc-byTags-tags": ["List of tag values", "태그 값 목록"],
424
+ // * ==================== Filter ==================== * //
425
+
426
+ // * ==================== Etc ==================== * //
427
+ "enum-status-draft": ["Draft", "초안"],
428
+ "enumdesc-status-draft": ["Not yet published", "아직 게시되지 않음"],
429
+
430
+ "enum-status-published": ["Published", "게시됨"],
431
+ "enumdesc-status-published": ["Publicly available", "공개적으로 사용 가능"],
432
+
433
+ "enum-status-archived": ["Archived", "보관됨"],
434
+ "enumdesc-status-archived": ["No longer active but preserved", "더 이상 활성화되지 않지만 보존됨"],
435
+
436
+ deleteConfirm: ["Delete this post?", "이 게시물을 삭제하시겠습니까?"],
437
+ publishConfirm: ["Publish this post?", "이 게시물을 게시하시겠습니까?"],
438
+ // * ==================== Etc ==================== * //
439
+ } satisfies ModelDictionary<Post, PostInsight, PostFilter>;
440
+
441
+ export const postSummaryDictionary = {
442
+ // * ==================== Summary ==================== * //
443
+ totalPosts: ["Total Posts", "총 게시물 수"],
444
+ "desc-totalPosts": ["Total post count in database", "데이터베이스의 총 게시물 수"],
445
+
446
+ publishedPosts: ["Published Posts", "게시된 게시물 수"],
447
+ "desc-publishedPosts": ["Number of published posts", "게시된 게시물 수"],
448
+
449
+ draftPosts: ["Draft Posts", "초안 게시물 수"],
450
+ "desc-draftPosts": ["Number of draft posts", "초안 게시물 수"],
451
+ // * ==================== Summary ==================== * //
452
+ } satisfies SummaryDictionary<PostSummary>;
453
+
454
+ const signalDictionary = {
455
+ ...getBaseSignalTrans("post"),
456
+
457
+ // * ==================== Endpoint ==================== * //
458
+ "api-publishPost": ["Publish Post", "게시물 게시"],
459
+ "apidesc-publishPost": ["Change post status to published", "게시물 상태를 게시됨으로 변경"],
460
+ "arg-publishPost-postId": ["Post ID", "게시물 ID"],
461
+ "argdesc-publishPost-postId": ["Target post identifier", "대상 게시물 식별자"],
462
+
463
+ "api-featurePost": ["Feature Post", "게시물 주목"],
464
+ "apidesc-featurePost": ["Mark post as featured", "게시물을 주목 대상으로 표시"],
465
+ "arg-featurePost-postId": ["Post ID", "게시물 ID"],
466
+ "argdesc-featurePost-postId": ["Target post identifier", "대상 게시물 식별자"],
467
+
468
+ "api-getPopularPosts": ["Get Popular Posts", "인기 게시물 가져오기"],
469
+ "apidesc-getPopularPosts": ["Retrieve most viewed posts", "가장 많이 본 게시물 검색"],
470
+ "arg-getPopularPosts-limit": ["Limit", "제한"],
471
+ "argdesc-getPopularPosts-limit": ["Maximum number of results", "최대 결과 수"],
472
+ // * ==================== Endpoint ==================== * //
473
+ } satisfies SignalDictionary<PostSignal, Post>;
474
+
475
+ export const postDictionary = { ...modelDictionary, ...signalDictionary };
476
+ ```
477
+
478
+ ---
479
+
480
+ ## 11. Extended Model Example
481
+
482
+ For models that extend base functionality, like user settings:
483
+
484
+ ```typescript
485
+ import { ExtendModelDictionary, SignalDictionary } from "@akanjs/dictionary";
486
+ import type { UserSetting } from "./userSetting.constant";
487
+ import type { UserSettingSignal } from "./userSetting.signal";
488
+
489
+ const userSettingDictionary = {
490
+ // * ==================== Model ==================== * //
491
+ notificationEnabled: ["Enable Notifications", "알림 활성화"],
492
+ "desc-notificationEnabled": ["Toggle all notifications", "모든 알림 토글"],
493
+
494
+ emailFrequency: ["Email Frequency", "이메일 빈도"],
495
+ "desc-emailFrequency": ["How often to send emails", "이메일 발송 빈도"],
496
+
497
+ theme: ["Theme", "테마"],
498
+ "desc-theme": ["UI color scheme", "UI 색상 구성표"],
499
+
500
+ language: ["Language", "언어"],
501
+ "desc-language": ["Interface language", "인터페이스 언어"],
502
+ // * ==================== Model ==================== * //
503
+
504
+ // * ==================== Etc ==================== * //
505
+ "enum-emailFrequency-never": ["Never", "안 함"],
506
+ "enumdesc-emailFrequency-never": ["Don't send emails", "이메일 발송 안 함"],
507
+
508
+ "enum-emailFrequency-daily": ["Daily", "매일"],
509
+ "enumdesc-emailFrequency-daily": ["Send digest once a day", "하루에 한 번 다이제스트 발송"],
510
+
511
+ "enum-emailFrequency-weekly": ["Weekly", "주간"],
512
+ "enumdesc-emailFrequency-weekly": ["Send digest once a week", "일주일에 한 번 다이제스트 발송"],
513
+
514
+ "enum-theme-light": ["Light", "라이트"],
515
+ "enumdesc-theme-light": ["Bright color scheme", "밝은 색상 구성표"],
516
+
517
+ "enum-theme-dark": ["Dark", "다크"],
518
+ "enumdesc-theme-dark": ["Dark color scheme", "어두운 색상 구성표"],
519
+
520
+ "enum-theme-system": ["System", "시스템"],
521
+ "enumdesc-theme-system": ["Follow system settings", "시스템 설정 따름"],
522
+
523
+ "enum-language-en": ["English", "영어"],
524
+ "enumdesc-language-en": ["English language", "영어"],
525
+
526
+ "enum-language-ko": ["Korean", "한국어"],
527
+ "enumdesc-language-ko": ["Korean language", "한국어"],
528
+ // * ==================== Etc ==================== * //
529
+
530
+ // * ==================== Endpoint ==================== * //
531
+ "api-saveUserPreferences": ["Save Preferences", "환경설정 저장"],
532
+ "apidesc-saveUserPreferences": ["Update user settings", "사용자 설정 업데이트"],
533
+ "arg-saveUserPreferences-settings": ["Settings", "설정"],
534
+ "argdesc-saveUserPreferences-settings": ["New settings values", "새 설정 값"],
535
+ // * ==================== Endpoint ==================== * //
536
+ } satisfies ExtendModelDictionary<UserSetting> & SignalDictionary<UserSettingSignal, UserSetting>;
537
+
538
+ export const settingDictionary = userSettingDictionary;
539
+ ```
540
+
541
+ ---
542
+
543
+ ## 12. Best Practices
544
+
545
+ 1. **Section Organization**: Maintain the standard section comments for code readability
546
+
547
+ ```typescript
548
+ // * ==================== Model ==================== * //
549
+ // Field translations here
550
+ // * ==================== Model ==================== * //
551
+ ```
552
+
553
+ 2. **Complete Descriptions**: Every field must have a matching description
554
+
555
+ ```typescript
556
+ title: ["Title", "제목"],
557
+ "desc-title": ["Content title", "콘텐츠 제목"],
558
+ ```
559
+
560
+ 3. **Consistent Language Order**: Always use the same order in translation arrays
561
+
562
+ ```typescript
563
+ // [English, Korean]
564
+ fieldName: ["Field Label", "필드 라벨"],
565
+ ```
566
+
567
+ 4. **Group Related Items**: Keep related translations together by type and function
568
+
569
+ 5. **Reuse Base Translations**: Always include `baseTrans` and `getBaseSignalTrans`
570
+
571
+ 6. **Use Type Safety**: Always use the `satisfies` keyword with proper types
572
+
573
+ 7. **Validate Dictionary**: Run `akan dict:check` before committing changes
574
+
575
+ 8. **Consistent Casing**:
576
+
577
+ - Model field names: camelCase
578
+ - Enum values: camelCase
579
+ - Custom keys: camelCase
580
+
581
+ 9. **Documentation Comments**: Add comments for complex or non-obvious translations
582
+
583
+ 10. **No Duplicate Keys**: Don't define the same key multiple times in different places