create-nexwire 4.0.0

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 (488) hide show
  1. package/README.md +233 -0
  2. package/express/.dockerignore +14 -0
  3. package/express/.env +44 -0
  4. package/express/.env.example +42 -0
  5. package/express/.vscode/settings.json +26 -0
  6. package/express/LICENSE +21 -0
  7. package/express/README.md +211 -0
  8. package/express/biome.json +66 -0
  9. package/express/drizzle.config.ts +25 -0
  10. package/express/gitignore-stub +24 -0
  11. package/express/package.json +108 -0
  12. package/express/public/.gitkeep +0 -0
  13. package/express/src/config/app.ts +41 -0
  14. package/express/src/config/auth.ts +12 -0
  15. package/express/src/config/cache.ts +16 -0
  16. package/express/src/config/cookie.ts +15 -0
  17. package/express/src/config/cors.ts +12 -0
  18. package/express/src/config/database.ts +29 -0
  19. package/express/src/config/index.ts +83 -0
  20. package/express/src/config/jwt.ts +19 -0
  21. package/express/src/config/logging.ts +13 -0
  22. package/express/src/config/mail.ts +24 -0
  23. package/express/src/config/openapi.ts +54 -0
  24. package/express/src/config/queue.ts +30 -0
  25. package/express/src/config/rateLimit.ts +17 -0
  26. package/express/src/config/realtime.ts +15 -0
  27. package/express/src/config/redis.ts +18 -0
  28. package/express/src/config/security.ts +44 -0
  29. package/express/src/config/session.ts +17 -0
  30. package/express/src/config/storage.ts +22 -0
  31. package/express/src/config/validate.ts +40 -0
  32. package/express/src/database/migrations/sqlite/0000_init.sql +61 -0
  33. package/express/src/database/migrations/sqlite/meta/0000_snapshot.json +412 -0
  34. package/express/src/database/migrations/sqlite/meta/_journal.json +13 -0
  35. package/express/src/database/schema.ts +3 -0
  36. package/express/src/env.ts +76 -0
  37. package/express/src/framework/cache/cache.ts +81 -0
  38. package/express/src/framework/circuit-breaker/cb.ts +60 -0
  39. package/express/src/framework/database/connection.ts +196 -0
  40. package/express/src/framework/database/migrate-hooks.ts +87 -0
  41. package/express/src/framework/database/paginate.ts +227 -0
  42. package/express/src/framework/database/schema.ts +20 -0
  43. package/express/src/framework/database/seed.ts +139 -0
  44. package/express/src/framework/events/dispatcher.ts +49 -0
  45. package/express/src/framework/facade.ts +48 -0
  46. package/express/src/framework/http/app.ts +107 -0
  47. package/express/src/framework/http/cors.ts +7 -0
  48. package/express/src/framework/http/logger.ts +69 -0
  49. package/express/src/framework/http/metrics.ts +22 -0
  50. package/express/src/framework/http/openapi.ts +54 -0
  51. package/express/src/framework/http/ratelimiter.ts +16 -0
  52. package/express/src/framework/http/router.ts +178 -0
  53. package/express/src/framework/http/security.ts +23 -0
  54. package/express/src/framework/http/static.ts +23 -0
  55. package/express/src/framework/http/validation.ts +18 -0
  56. package/express/src/framework/kernel.ts +52 -0
  57. package/express/src/framework/maker-cli/db/core.mjs +288 -0
  58. package/express/src/framework/maker-cli/db/index.mjs +204 -0
  59. package/express/src/framework/maker-cli/deploy/core.mjs +1047 -0
  60. package/express/src/framework/maker-cli/deploy/index.mjs +91 -0
  61. package/express/src/framework/maker-cli/index.mjs +53 -0
  62. package/express/src/framework/maker-cli/middleware/core.mjs +47 -0
  63. package/express/src/framework/maker-cli/middleware/index.mjs +17 -0
  64. package/express/src/framework/maker-cli/module/core.mjs +684 -0
  65. package/express/src/framework/maker-cli/module/index.mjs +140 -0
  66. package/express/src/framework/maker-cli/runtime/build-ui.mjs +16 -0
  67. package/express/src/framework/maker-cli/runtime/core.mjs +543 -0
  68. package/express/src/framework/maker-cli/runtime/index.mjs +104 -0
  69. package/express/src/framework/maker-cli/runtime/redis-commander-patch.cjs +20 -0
  70. package/express/src/framework/maker-cli/stubs/controller/openapi.ts.stub +47 -0
  71. package/express/src/framework/maker-cli/stubs/controller/openapi.with-model.ts.stub +48 -0
  72. package/express/src/framework/maker-cli/stubs/controller/plain.ts.stub +54 -0
  73. package/express/src/framework/maker-cli/stubs/controller/schema.plain.ts.stub +14 -0
  74. package/express/src/framework/maker-cli/stubs/controller/schema.ts.stub +33 -0
  75. package/express/src/framework/maker-cli/stubs/deploy/Dockerfile.bun.stub +52 -0
  76. package/express/src/framework/maker-cli/stubs/deploy/Dockerfile.pnpm.stub +55 -0
  77. package/express/src/framework/maker-cli/stubs/deploy/Dockerfile.stub +51 -0
  78. package/express/src/framework/maker-cli/stubs/deploy/Dockerfile.yarn.stub +55 -0
  79. package/express/src/framework/maker-cli/stubs/deploy/README.stub +59 -0
  80. package/express/src/framework/maker-cli/stubs/deploy/compose/mysql.server.stub +45 -0
  81. package/express/src/framework/maker-cli/stubs/deploy/compose/postgres.server.stub +45 -0
  82. package/express/src/framework/maker-cli/stubs/deploy/compose/sqlite.stub +45 -0
  83. package/express/src/framework/maker-cli/stubs/deploy/env/mysql.server.stub +68 -0
  84. package/express/src/framework/maker-cli/stubs/deploy/env/postgres.server.stub +68 -0
  85. package/express/src/framework/maker-cli/stubs/deploy/env/sqlite.stub +67 -0
  86. package/express/src/framework/maker-cli/stubs/deploy/scripts/auto-migrate.sh.stub +41 -0
  87. package/express/src/framework/maker-cli/stubs/deploy/server/README.stub +78 -0
  88. package/express/src/framework/maker-cli/stubs/deploy/server/compose/noredis.stub +120 -0
  89. package/express/src/framework/maker-cli/stubs/deploy/server/compose/redis.dev.stub +133 -0
  90. package/express/src/framework/maker-cli/stubs/deploy/server/compose/redis.stub +131 -0
  91. package/express/src/framework/maker-cli/stubs/deploy/server/env/local.example.stub +11 -0
  92. package/express/src/framework/maker-cli/stubs/deploy/server/env/noredis.stub +25 -0
  93. package/express/src/framework/maker-cli/stubs/deploy/server/env/redis.stub +25 -0
  94. package/express/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/README.stub +16 -0
  95. package/express/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/app.example.com.stub +13 -0
  96. package/express/src/framework/maker-cli/stubs/deploy/server/pgadmin/servers.stub +14 -0
  97. package/express/src/framework/maker-cli/stubs/deploy/server/redis/redis.conf.stub +7 -0
  98. package/express/src/framework/maker-cli/stubs/deploy/supervisor/noredis.stub +54 -0
  99. package/express/src/framework/maker-cli/stubs/deploy/supervisor/redis.stub +70 -0
  100. package/express/src/framework/maker-cli/stubs/deploy/workflow/local.json.stub +25 -0
  101. package/express/src/framework/maker-cli/stubs/deploy/workflow/remote.json.stub +24 -0
  102. package/express/src/framework/maker-cli/stubs/example/console.ts.stub +34 -0
  103. package/express/src/framework/maker-cli/stubs/example/controller.ts.stub +418 -0
  104. package/express/src/framework/maker-cli/stubs/example/job.ts.stub +75 -0
  105. package/express/src/framework/maker-cli/stubs/example/route.api.ts.stub +207 -0
  106. package/express/src/framework/maker-cli/stubs/example/route.plain.ts.stub +18 -0
  107. package/express/src/framework/maker-cli/stubs/example/schema.plain.ts.stub +42 -0
  108. package/express/src/framework/maker-cli/stubs/example/schema.ts.stub +42 -0
  109. package/express/src/framework/maker-cli/stubs/job/name.ts.stub +25 -0
  110. package/express/src/framework/maker-cli/stubs/middleware/name.ts.stub +14 -0
  111. package/express/src/framework/maker-cli/stubs/model/name.mysql.ts.stub +9 -0
  112. package/express/src/framework/maker-cli/stubs/model/name.postgresql.ts.stub +9 -0
  113. package/express/src/framework/maker-cli/stubs/model/name.sqlite.ts.stub +9 -0
  114. package/express/src/framework/maker-cli/stubs/notification/controller.ts.stub +77 -0
  115. package/express/src/framework/maker-cli/stubs/notification/job.ts.stub +13 -0
  116. package/express/src/framework/maker-cli/stubs/notification/route.api.ts.stub +50 -0
  117. package/express/src/framework/maker-cli/stubs/notification/route.plain.ts.stub +12 -0
  118. package/express/src/framework/maker-cli/stubs/notification/schema.plain.ts.stub +26 -0
  119. package/express/src/framework/maker-cli/stubs/notification/schema.ts.stub +26 -0
  120. package/express/src/framework/maker-cli/stubs/route/api.ts.stub +80 -0
  121. package/express/src/framework/maker-cli/stubs/route/plain.ts.stub +11 -0
  122. package/express/src/framework/maker-cli/stubs/schedule/name.ts.stub +36 -0
  123. package/express/src/framework/maker-cli/stubs/seeder/name.ts.stub +20 -0
  124. package/express/src/framework/maker-cli/stubs/test/unit.ts.stub +22 -0
  125. package/express/src/framework/maker-cli/utils/env-config.mjs +44 -0
  126. package/express/src/framework/maker-cli/utils/env-db.mjs +61 -0
  127. package/express/src/framework/maker-cli/utils/file-ops.mjs +30 -0
  128. package/express/src/framework/maker-cli/utils/flags.mjs +14 -0
  129. package/express/src/framework/maker-cli/utils/help.mjs +50 -0
  130. package/express/src/framework/maker-cli/utils/naming.mjs +13 -0
  131. package/express/src/framework/maker-cli/utils/process.mjs +52 -0
  132. package/express/src/framework/modules/discover.ts +54 -0
  133. package/express/src/framework/modules/routes.ts +21 -0
  134. package/express/src/framework/notification/index.ts +116 -0
  135. package/express/src/framework/queue/clear.ts +22 -0
  136. package/express/src/framework/queue/queue.ts +342 -0
  137. package/express/src/framework/queue/ui.ts +187 -0
  138. package/express/src/framework/queue/worker.ts +61 -0
  139. package/express/src/framework/realtime/broadcast.ts +46 -0
  140. package/express/src/framework/realtime/index.ts +2 -0
  141. package/express/src/framework/realtime/socket-cookie.ts +71 -0
  142. package/express/src/framework/realtime/socket.ts +119 -0
  143. package/express/src/framework/realtime/types.ts +6 -0
  144. package/express/src/framework/realtime/ui.ts +16 -0
  145. package/express/src/framework/redis/client.ts +151 -0
  146. package/express/src/framework/runtime/runtime.ts +23 -0
  147. package/express/src/framework/runtime/server-adapter.ts +34 -0
  148. package/express/src/framework/scheduler/lock.ts +116 -0
  149. package/express/src/framework/scheduler/run.ts +48 -0
  150. package/express/src/framework/scheduler/scheduler.ts +155 -0
  151. package/express/src/framework/server.ts +177 -0
  152. package/express/src/framework/session/session.ts +98 -0
  153. package/express/src/framework/storage/storage.ts +785 -0
  154. package/express/src/framework/support/cookie.ts +62 -0
  155. package/express/src/framework/support/jwt.ts +33 -0
  156. package/express/src/framework/support/lifecycle.ts +35 -0
  157. package/express/src/framework/support/logger.ts +148 -0
  158. package/express/src/framework/support/mail.ts +48 -0
  159. package/express/src/framework/support/password.ts +23 -0
  160. package/express/src/framework/support/upload.ts +160 -0
  161. package/express/src/framework/support/url.ts +41 -0
  162. package/express/src/middlewares/auth-middleware.ts +98 -0
  163. package/express/src/middlewares/role-middleware.ts +25 -0
  164. package/express/src/modules/auth/controllers/auth.controller.ts +358 -0
  165. package/express/src/modules/auth/controllers/auth.helpers.ts +104 -0
  166. package/express/src/modules/auth/controllers/auth.schema.ts +102 -0
  167. package/express/src/modules/auth/controllers/role.controller.ts +15 -0
  168. package/express/src/modules/auth/database/models/notifications.ts +24 -0
  169. package/express/src/modules/auth/database/models/role.ts +14 -0
  170. package/express/src/modules/auth/database/models/user.ts +46 -0
  171. package/express/src/modules/auth/database/seeders/role.ts +18 -0
  172. package/express/src/modules/auth/database/seeders/user.ts +35 -0
  173. package/express/src/modules/auth/jobs/forgetpass.ts +20 -0
  174. package/express/src/modules/auth/jobs/registeruser.ts +23 -0
  175. package/express/src/modules/auth/jobs/verifyemail.ts +18 -0
  176. package/express/src/modules/auth/routes/api.ts +150 -0
  177. package/express/src/modules/auth/routes/role.ts +33 -0
  178. package/express/src/resources/index.html +17 -0
  179. package/express/src/resources/src/App.vue +5 -0
  180. package/express/src/resources/src/assets/css/styles.css +14761 -0
  181. package/express/src/resources/src/assets/css/styles.css.map +1 -0
  182. package/express/src/resources/src/assets/fonts/public-sans/public-sans-latin-ext.woff2 +0 -0
  183. package/express/src/resources/src/assets/fonts/public-sans/public-sans-latin.woff2 +0 -0
  184. package/express/src/resources/src/assets/images/favicon/favicon.ico +0 -0
  185. package/express/src/resources/src/assets/images/logo.png +0 -0
  186. package/express/src/resources/src/assets/scss/custom.css +217 -0
  187. package/express/src/resources/src/assets/scss/custom.css.map +1 -0
  188. package/express/src/resources/src/assets/scss/custom.scss +1346 -0
  189. package/express/src/resources/src/components/Button.vue +32 -0
  190. package/express/src/resources/src/components/Checkbox.vue +29 -0
  191. package/express/src/resources/src/components/Datepicker.vue +106 -0
  192. package/express/src/resources/src/components/FeatureButton.vue +53 -0
  193. package/express/src/resources/src/components/FloatButton.vue +33 -0
  194. package/express/src/resources/src/components/Href.vue +32 -0
  195. package/express/src/resources/src/components/Input.vue +223 -0
  196. package/express/src/resources/src/components/InputGroup.vue +145 -0
  197. package/express/src/resources/src/components/InputPasswordToggle.vue +213 -0
  198. package/express/src/resources/src/components/Modal.vue +55 -0
  199. package/express/src/resources/src/components/Pagebar.vue +26 -0
  200. package/express/src/resources/src/components/Select.vue +384 -0
  201. package/express/src/resources/src/components/Spinner.vue +42 -0
  202. package/express/src/resources/src/components/Switch.vue +65 -0
  203. package/express/src/resources/src/components/TextArea.vue +117 -0
  204. package/express/src/resources/src/components/Toast.vue +56 -0
  205. package/express/src/resources/src/components/datatable/DataTableSkeleton.vue +98 -0
  206. package/express/src/resources/src/components/datatable/Pagination.vue +147 -0
  207. package/express/src/resources/src/components/datatable/SelectOpption.vue +64 -0
  208. package/express/src/resources/src/components/datatable/index.vue +199 -0
  209. package/express/src/resources/src/composables/useAuth.ts +52 -0
  210. package/express/src/resources/src/helpers/nformatter.ts +10 -0
  211. package/express/src/resources/src/helpers/utils.ts +75 -0
  212. package/express/src/resources/src/layouts/AuthLayout.vue +20 -0
  213. package/express/src/resources/src/layouts/Layout/Footer.vue +23 -0
  214. package/express/src/resources/src/layouts/Layout/Header.vue +105 -0
  215. package/express/src/resources/src/layouts/Layout/Sidebar.vue +137 -0
  216. package/express/src/resources/src/layouts/Layout/index.vue +87 -0
  217. package/express/src/resources/src/main.ts +26 -0
  218. package/express/src/resources/src/pages/auth/forgetPassword.vue +82 -0
  219. package/express/src/resources/src/pages/auth/login.vue +99 -0
  220. package/express/src/resources/src/pages/auth/register.vue +133 -0
  221. package/express/src/resources/src/pages/auth/resetPassword.vue +118 -0
  222. package/express/src/resources/src/pages/auth/verifyEmail.vue +68 -0
  223. package/express/src/resources/src/pages/dashboard/index.vue +66 -0
  224. package/express/src/resources/src/plugins/axios.ts +31 -0
  225. package/express/src/resources/src/plugins/browserDetect.ts +55 -0
  226. package/express/src/resources/src/plugins/dialog.ts +216 -0
  227. package/express/src/resources/src/plugins/gum.ts +367 -0
  228. package/express/src/resources/src/plugins/pulse.ts +147 -0
  229. package/express/src/resources/src/plugins/routeProgress.ts +87 -0
  230. package/express/src/resources/src/router/index.ts +85 -0
  231. package/express/src/resources/src/stores/admin-ui.ts +148 -0
  232. package/express/src/resources/src/stores/auth.ts +164 -0
  233. package/express/src/resources/tsconfig.json +19 -0
  234. package/express/src/resources/vite.config.ts +46 -0
  235. package/express/src/storage/app/private/.gitkeep +0 -0
  236. package/express/src/storage/app/public/.gitkeep +0 -0
  237. package/express/src/storage/app/tmp/generated/.gitkeep +0 -0
  238. package/express/src/storage/database/nexwire.sqlite +0 -0
  239. package/express/src/storage/logs/.gitkeep +0 -0
  240. package/express/src/storage/tmp/.gitkeep +0 -0
  241. package/express/src/storage/trash/modules/.gitkeep +0 -0
  242. package/express/src/types/global.d.ts +26 -0
  243. package/express/tsconfig.json +19 -0
  244. package/express/vitest.config.ts +23 -0
  245. package/hono/.dockerignore +14 -0
  246. package/hono/.env +44 -0
  247. package/hono/.env.example +42 -0
  248. package/hono/.vscode/settings.json +26 -0
  249. package/hono/LICENSE +21 -0
  250. package/hono/README.md +211 -0
  251. package/hono/biome.json +76 -0
  252. package/hono/drizzle.config.ts +25 -0
  253. package/hono/gitignore-stub +24 -0
  254. package/hono/package.json +99 -0
  255. package/hono/public/.gitkeep +0 -0
  256. package/hono/src/config/app.ts +41 -0
  257. package/hono/src/config/auth.ts +12 -0
  258. package/hono/src/config/cache.ts +16 -0
  259. package/hono/src/config/cookie.ts +15 -0
  260. package/hono/src/config/cors.ts +12 -0
  261. package/hono/src/config/database.ts +29 -0
  262. package/hono/src/config/index.ts +83 -0
  263. package/hono/src/config/jwt.ts +19 -0
  264. package/hono/src/config/logging.ts +13 -0
  265. package/hono/src/config/mail.ts +24 -0
  266. package/hono/src/config/openapi.ts +54 -0
  267. package/hono/src/config/queue.ts +30 -0
  268. package/hono/src/config/rateLimit.ts +17 -0
  269. package/hono/src/config/realtime.ts +15 -0
  270. package/hono/src/config/redis.ts +18 -0
  271. package/hono/src/config/security.ts +44 -0
  272. package/hono/src/config/session.ts +17 -0
  273. package/hono/src/config/storage.ts +22 -0
  274. package/hono/src/config/validate.ts +40 -0
  275. package/hono/src/database/migrations/sqlite/0000_init.sql +61 -0
  276. package/hono/src/database/migrations/sqlite/meta/0000_snapshot.json +412 -0
  277. package/hono/src/database/migrations/sqlite/meta/_journal.json +13 -0
  278. package/hono/src/database/schema.ts +3 -0
  279. package/hono/src/env.ts +76 -0
  280. package/hono/src/framework/cache/cache.ts +81 -0
  281. package/hono/src/framework/circuit-breaker/cb.ts +60 -0
  282. package/hono/src/framework/database/connection.ts +196 -0
  283. package/hono/src/framework/database/migrate-hooks.ts +87 -0
  284. package/hono/src/framework/database/paginate.ts +253 -0
  285. package/hono/src/framework/database/schema.ts +20 -0
  286. package/hono/src/framework/database/seed.ts +139 -0
  287. package/hono/src/framework/events/dispatcher.ts +49 -0
  288. package/hono/src/framework/facade.ts +29 -0
  289. package/hono/src/framework/http/app.ts +109 -0
  290. package/hono/src/framework/http/cors.ts +19 -0
  291. package/hono/src/framework/http/logger.ts +81 -0
  292. package/hono/src/framework/http/metrics.ts +22 -0
  293. package/hono/src/framework/http/openapi.ts +42 -0
  294. package/hono/src/framework/http/ratelimiter.ts +172 -0
  295. package/hono/src/framework/http/router.ts +76 -0
  296. package/hono/src/framework/http/security.ts +23 -0
  297. package/hono/src/framework/http/static.ts +70 -0
  298. package/hono/src/framework/http/validation.ts +21 -0
  299. package/hono/src/framework/kernel.ts +48 -0
  300. package/hono/src/framework/maker-cli/db/core.mjs +288 -0
  301. package/hono/src/framework/maker-cli/db/index.mjs +204 -0
  302. package/hono/src/framework/maker-cli/deploy/core.mjs +1038 -0
  303. package/hono/src/framework/maker-cli/deploy/index.mjs +91 -0
  304. package/hono/src/framework/maker-cli/index.mjs +53 -0
  305. package/hono/src/framework/maker-cli/middleware/core.mjs +47 -0
  306. package/hono/src/framework/maker-cli/middleware/index.mjs +12 -0
  307. package/hono/src/framework/maker-cli/module/core.mjs +684 -0
  308. package/hono/src/framework/maker-cli/module/index.mjs +140 -0
  309. package/hono/src/framework/maker-cli/runtime/build-ui.mjs +17 -0
  310. package/hono/src/framework/maker-cli/runtime/core.mjs +543 -0
  311. package/hono/src/framework/maker-cli/runtime/index.mjs +104 -0
  312. package/hono/src/framework/maker-cli/runtime/redis-commander-patch.cjs +20 -0
  313. package/hono/src/framework/maker-cli/stubs/controller/openapi.ts.stub +57 -0
  314. package/hono/src/framework/maker-cli/stubs/controller/openapi.with-model.ts.stub +58 -0
  315. package/hono/src/framework/maker-cli/stubs/controller/plain.ts.stub +59 -0
  316. package/hono/src/framework/maker-cli/stubs/controller/schema.plain.ts.stub +14 -0
  317. package/hono/src/framework/maker-cli/stubs/controller/schema.ts.stub +33 -0
  318. package/hono/src/framework/maker-cli/stubs/deploy/Dockerfile.bun.stub +52 -0
  319. package/hono/src/framework/maker-cli/stubs/deploy/Dockerfile.pnpm.stub +55 -0
  320. package/hono/src/framework/maker-cli/stubs/deploy/Dockerfile.stub +51 -0
  321. package/hono/src/framework/maker-cli/stubs/deploy/Dockerfile.yarn.stub +55 -0
  322. package/hono/src/framework/maker-cli/stubs/deploy/README.stub +59 -0
  323. package/hono/src/framework/maker-cli/stubs/deploy/compose/mysql.server.stub +45 -0
  324. package/hono/src/framework/maker-cli/stubs/deploy/compose/postgres.server.stub +45 -0
  325. package/hono/src/framework/maker-cli/stubs/deploy/compose/sqlite.stub +45 -0
  326. package/hono/src/framework/maker-cli/stubs/deploy/env/mysql.server.stub +68 -0
  327. package/hono/src/framework/maker-cli/stubs/deploy/env/postgres.server.stub +68 -0
  328. package/hono/src/framework/maker-cli/stubs/deploy/env/sqlite.stub +67 -0
  329. package/hono/src/framework/maker-cli/stubs/deploy/scripts/auto-migrate.sh.stub +41 -0
  330. package/hono/src/framework/maker-cli/stubs/deploy/server/README.stub +78 -0
  331. package/hono/src/framework/maker-cli/stubs/deploy/server/compose/noredis.stub +120 -0
  332. package/hono/src/framework/maker-cli/stubs/deploy/server/compose/redis.dev.stub +133 -0
  333. package/hono/src/framework/maker-cli/stubs/deploy/server/compose/redis.stub +131 -0
  334. package/hono/src/framework/maker-cli/stubs/deploy/server/env/local.example.stub +11 -0
  335. package/hono/src/framework/maker-cli/stubs/deploy/server/env/noredis.stub +25 -0
  336. package/hono/src/framework/maker-cli/stubs/deploy/server/env/redis.stub +25 -0
  337. package/hono/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/README.stub +16 -0
  338. package/hono/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/app.example.com.stub +13 -0
  339. package/hono/src/framework/maker-cli/stubs/deploy/server/pgadmin/servers.stub +14 -0
  340. package/hono/src/framework/maker-cli/stubs/deploy/server/redis/redis.conf.stub +7 -0
  341. package/hono/src/framework/maker-cli/stubs/deploy/supervisor/noredis.stub +54 -0
  342. package/hono/src/framework/maker-cli/stubs/deploy/supervisor/redis.stub +70 -0
  343. package/hono/src/framework/maker-cli/stubs/deploy/workflow/local.json.stub +25 -0
  344. package/hono/src/framework/maker-cli/stubs/deploy/workflow/remote.json.stub +24 -0
  345. package/hono/src/framework/maker-cli/stubs/example/console.ts.stub +34 -0
  346. package/hono/src/framework/maker-cli/stubs/example/controller.ts.stub +505 -0
  347. package/hono/src/framework/maker-cli/stubs/example/job.ts.stub +75 -0
  348. package/hono/src/framework/maker-cli/stubs/example/route.api.ts.stub +207 -0
  349. package/hono/src/framework/maker-cli/stubs/example/route.plain.ts.stub +18 -0
  350. package/hono/src/framework/maker-cli/stubs/example/schema.plain.ts.stub +42 -0
  351. package/hono/src/framework/maker-cli/stubs/example/schema.ts.stub +42 -0
  352. package/hono/src/framework/maker-cli/stubs/job/name.ts.stub +25 -0
  353. package/hono/src/framework/maker-cli/stubs/middleware/name.ts.stub +14 -0
  354. package/hono/src/framework/maker-cli/stubs/model/name.mysql.ts.stub +9 -0
  355. package/hono/src/framework/maker-cli/stubs/model/name.postgresql.ts.stub +9 -0
  356. package/hono/src/framework/maker-cli/stubs/model/name.sqlite.ts.stub +9 -0
  357. package/hono/src/framework/maker-cli/stubs/notification/controller.ts.stub +86 -0
  358. package/hono/src/framework/maker-cli/stubs/notification/job.ts.stub +13 -0
  359. package/hono/src/framework/maker-cli/stubs/notification/route.api.ts.stub +50 -0
  360. package/hono/src/framework/maker-cli/stubs/notification/route.plain.ts.stub +12 -0
  361. package/hono/src/framework/maker-cli/stubs/notification/schema.plain.ts.stub +26 -0
  362. package/hono/src/framework/maker-cli/stubs/notification/schema.ts.stub +26 -0
  363. package/hono/src/framework/maker-cli/stubs/route/api.ts.stub +80 -0
  364. package/hono/src/framework/maker-cli/stubs/route/plain.ts.stub +11 -0
  365. package/hono/src/framework/maker-cli/stubs/schedule/name.ts.stub +36 -0
  366. package/hono/src/framework/maker-cli/stubs/seeder/name.ts.stub +20 -0
  367. package/hono/src/framework/maker-cli/stubs/test/unit.ts.stub +22 -0
  368. package/hono/src/framework/maker-cli/utils/env-config.mjs +44 -0
  369. package/hono/src/framework/maker-cli/utils/env-db.mjs +61 -0
  370. package/hono/src/framework/maker-cli/utils/file-ops.mjs +30 -0
  371. package/hono/src/framework/maker-cli/utils/flags.mjs +14 -0
  372. package/hono/src/framework/maker-cli/utils/help.mjs +50 -0
  373. package/hono/src/framework/maker-cli/utils/naming.mjs +13 -0
  374. package/hono/src/framework/maker-cli/utils/process.mjs +52 -0
  375. package/hono/src/framework/modules/discover.ts +54 -0
  376. package/hono/src/framework/modules/routes.ts +24 -0
  377. package/hono/src/framework/notification/index.ts +116 -0
  378. package/hono/src/framework/queue/clear.ts +22 -0
  379. package/hono/src/framework/queue/queue.ts +342 -0
  380. package/hono/src/framework/queue/ui.ts +214 -0
  381. package/hono/src/framework/queue/worker.ts +61 -0
  382. package/hono/src/framework/realtime/broadcast.ts +46 -0
  383. package/hono/src/framework/realtime/index.ts +2 -0
  384. package/hono/src/framework/realtime/socket-cookie.ts +68 -0
  385. package/hono/src/framework/realtime/socket.ts +196 -0
  386. package/hono/src/framework/realtime/types.ts +6 -0
  387. package/hono/src/framework/realtime/ui.ts +16 -0
  388. package/hono/src/framework/redis/client.ts +151 -0
  389. package/hono/src/framework/runtime/runtime.ts +23 -0
  390. package/hono/src/framework/runtime/server-adapter.ts +94 -0
  391. package/hono/src/framework/scheduler/lock.ts +116 -0
  392. package/hono/src/framework/scheduler/run.ts +48 -0
  393. package/hono/src/framework/scheduler/scheduler.ts +155 -0
  394. package/hono/src/framework/server.ts +183 -0
  395. package/hono/src/framework/session/session.ts +116 -0
  396. package/hono/src/framework/storage/storage.ts +785 -0
  397. package/hono/src/framework/support/cookie.ts +99 -0
  398. package/hono/src/framework/support/jwt.ts +45 -0
  399. package/hono/src/framework/support/lifecycle.ts +35 -0
  400. package/hono/src/framework/support/logger.ts +148 -0
  401. package/hono/src/framework/support/mail.ts +48 -0
  402. package/hono/src/framework/support/password.ts +23 -0
  403. package/hono/src/framework/support/url.ts +41 -0
  404. package/hono/src/middlewares/auth-middleware.ts +98 -0
  405. package/hono/src/middlewares/role-middleware.ts +25 -0
  406. package/hono/src/modules/auth/controllers/auth.controller.ts +413 -0
  407. package/hono/src/modules/auth/controllers/auth.helpers.ts +128 -0
  408. package/hono/src/modules/auth/controllers/auth.schema.ts +102 -0
  409. package/hono/src/modules/auth/controllers/role.controller.ts +25 -0
  410. package/hono/src/modules/auth/database/models/notifications.ts +24 -0
  411. package/hono/src/modules/auth/database/models/role.ts +14 -0
  412. package/hono/src/modules/auth/database/models/user.ts +46 -0
  413. package/hono/src/modules/auth/database/seeders/role.ts +18 -0
  414. package/hono/src/modules/auth/database/seeders/user.ts +35 -0
  415. package/hono/src/modules/auth/jobs/forgetpass.ts +20 -0
  416. package/hono/src/modules/auth/jobs/registeruser.ts +23 -0
  417. package/hono/src/modules/auth/jobs/verifyemail.ts +18 -0
  418. package/hono/src/modules/auth/routes/api.ts +150 -0
  419. package/hono/src/modules/auth/routes/role.ts +33 -0
  420. package/hono/src/resources/index.html +17 -0
  421. package/hono/src/resources/src/App.vue +5 -0
  422. package/hono/src/resources/src/assets/css/styles.css +14913 -0
  423. package/hono/src/resources/src/assets/css/styles.css.map +1 -0
  424. package/hono/src/resources/src/assets/fonts/public-sans/public-sans-latin-ext.woff2 +0 -0
  425. package/hono/src/resources/src/assets/fonts/public-sans/public-sans-latin.woff2 +0 -0
  426. package/hono/src/resources/src/assets/images/favicon/favicon.ico +0 -0
  427. package/hono/src/resources/src/assets/images/logo.png +0 -0
  428. package/hono/src/resources/src/assets/scss/custom.css +217 -0
  429. package/hono/src/resources/src/assets/scss/custom.css.map +1 -0
  430. package/hono/src/resources/src/assets/scss/custom.scss +1346 -0
  431. package/hono/src/resources/src/components/Button.vue +32 -0
  432. package/hono/src/resources/src/components/Checkbox.vue +29 -0
  433. package/hono/src/resources/src/components/Datepicker.vue +106 -0
  434. package/hono/src/resources/src/components/FeatureButton.vue +53 -0
  435. package/hono/src/resources/src/components/FloatButton.vue +33 -0
  436. package/hono/src/resources/src/components/Href.vue +32 -0
  437. package/hono/src/resources/src/components/Input.vue +234 -0
  438. package/hono/src/resources/src/components/InputGroup.vue +149 -0
  439. package/hono/src/resources/src/components/InputPasswordToggle.vue +222 -0
  440. package/hono/src/resources/src/components/Modal.vue +55 -0
  441. package/hono/src/resources/src/components/Pagebar.vue +26 -0
  442. package/hono/src/resources/src/components/Select.vue +415 -0
  443. package/hono/src/resources/src/components/Spinner.vue +42 -0
  444. package/hono/src/resources/src/components/Switch.vue +65 -0
  445. package/hono/src/resources/src/components/TextArea.vue +121 -0
  446. package/hono/src/resources/src/components/Toast.vue +56 -0
  447. package/hono/src/resources/src/components/datatable/DataTableSkeleton.vue +98 -0
  448. package/hono/src/resources/src/components/datatable/Pagination.vue +147 -0
  449. package/hono/src/resources/src/components/datatable/SelectOpption.vue +64 -0
  450. package/hono/src/resources/src/components/datatable/index.vue +199 -0
  451. package/hono/src/resources/src/composables/useAuth.ts +52 -0
  452. package/hono/src/resources/src/helpers/nformatter.ts +10 -0
  453. package/hono/src/resources/src/helpers/utils.ts +75 -0
  454. package/hono/src/resources/src/layouts/AuthLayout.vue +20 -0
  455. package/hono/src/resources/src/layouts/Layout/Footer.vue +23 -0
  456. package/hono/src/resources/src/layouts/Layout/Header.vue +105 -0
  457. package/hono/src/resources/src/layouts/Layout/Sidebar.vue +137 -0
  458. package/hono/src/resources/src/layouts/Layout/index.vue +87 -0
  459. package/hono/src/resources/src/main.ts +26 -0
  460. package/hono/src/resources/src/pages/auth/forgetPassword.vue +82 -0
  461. package/hono/src/resources/src/pages/auth/login.vue +99 -0
  462. package/hono/src/resources/src/pages/auth/register.vue +133 -0
  463. package/hono/src/resources/src/pages/auth/resetPassword.vue +118 -0
  464. package/hono/src/resources/src/pages/auth/verifyEmail.vue +68 -0
  465. package/hono/src/resources/src/pages/dashboard/index.vue +66 -0
  466. package/hono/src/resources/src/plugins/axios.ts +31 -0
  467. package/hono/src/resources/src/plugins/browserDetect.ts +55 -0
  468. package/hono/src/resources/src/plugins/dialog.ts +216 -0
  469. package/hono/src/resources/src/plugins/gum.ts +367 -0
  470. package/hono/src/resources/src/plugins/pulse.ts +147 -0
  471. package/hono/src/resources/src/plugins/routeProgress.ts +87 -0
  472. package/hono/src/resources/src/router/index.ts +85 -0
  473. package/hono/src/resources/src/stores/admin-ui.ts +148 -0
  474. package/hono/src/resources/src/stores/auth.ts +164 -0
  475. package/hono/src/resources/tsconfig.json +19 -0
  476. package/hono/src/resources/vite.config.ts +46 -0
  477. package/hono/src/storage/app/private/.gitkeep +0 -0
  478. package/hono/src/storage/app/public/.gitkeep +0 -0
  479. package/hono/src/storage/app/tmp/generated/.gitkeep +0 -0
  480. package/hono/src/storage/database/nexwire.sqlite +0 -0
  481. package/hono/src/storage/logs/.gitkeep +0 -0
  482. package/hono/src/storage/tmp/.gitkeep +0 -0
  483. package/hono/src/storage/trash/modules/.gitkeep +0 -0
  484. package/hono/src/types/global.d.ts +26 -0
  485. package/hono/tsconfig.json +20 -0
  486. package/hono/vitest.config.ts +23 -0
  487. package/package.json +238 -0
  488. package/src/index.js +204 -0
@@ -0,0 +1,104 @@
1
+ import { clearViteCache, runRuntime, runTest, runTestCoverage, runTestUI, runTestWatch, runUi, runVite } from "./core.mjs";
2
+
3
+ /** Register runtime commands (dev, serve, queue, schedule, UI tools) on the CLI program. */
4
+ export function registerRuntimeCommands(program, rawArgs) {
5
+ program
6
+ .command("dev")
7
+ .description("Start API + Vue 3 UI plus optional workers/tools")
8
+ .option("--view <tools>", "Comma-separated UI tools to launch (redis,maildev,studio)")
9
+ .option("--viewer <tools>", "Alias for --view (npm expands --view to --viewer)")
10
+ .option("--with <tools>", "Alias for --view")
11
+ .option("--with-redis-view", "Launch Redis Commander")
12
+ .option("--with-maildev", "Launch MailDev")
13
+ .option("--with-db-studio", "Launch Drizzle Studio")
14
+ .allowUnknownOption(true)
15
+ .action(async () => runRuntime("dev", rawArgs));
16
+ program
17
+ .command("serve")
18
+ .description("Start HTTP server (dist first if built, else src)")
19
+ .option("--prod", "Run production build")
20
+ .option("--runtime <name>", "Runtime: node or bun", "node")
21
+ .option("--watch", "Watch for file changes (src mode)")
22
+ .option("--src", "Force source mode even if dist exists")
23
+ .allowUnknownOption(true)
24
+ .action(async () => runRuntime("serve", rawArgs));
25
+ program
26
+ .command("queue:work")
27
+ .description("Start queue worker (dist first if built, else src)")
28
+ .option("--queue <name>", "Queue name", "default")
29
+ .option("--prod", "Run production build")
30
+ .option("--runtime <name>", "Runtime: node or bun", "node")
31
+ .option("--src", "Force source mode even if dist exists")
32
+ .allowUnknownOption(true)
33
+ .action(async () => runRuntime("queue:work", rawArgs));
34
+ program
35
+ .command("queue:clear")
36
+ .description("Clear all queue keys")
37
+ .allowUnknownOption(true)
38
+ .action(async () => runRuntime("queue:clear", rawArgs));
39
+ program
40
+ .command("schedule:work")
41
+ .description("Start scheduler worker (dist first if built, else src)")
42
+ .option("--prod", "Run production build")
43
+ .option("--runtime <name>", "Runtime: node or bun", "node")
44
+ .option("--src", "Force source mode even if dist exists")
45
+ .allowUnknownOption(true)
46
+ .action(async () => runRuntime("schedule:work", rawArgs));
47
+ program
48
+ .command("maildev:view")
49
+ .description("Start MailDev SMTP and web UI")
50
+ .allowUnknownOption(true)
51
+ .action(async () => runUi("maildev:view"));
52
+ program
53
+ .command("redis:view")
54
+ .description("Start Redis Commander UI")
55
+ .allowUnknownOption(true)
56
+ .action(async () => runUi("redis:view"));
57
+ program
58
+ .command("ui:dev")
59
+ .description("Start Vue 3 UI from src/resources")
60
+ .allowUnknownOption(true)
61
+ .action(async () => runVite("src/resources/vite.config.ts"));
62
+ program
63
+ .command("admin:dev")
64
+ .description("Start admin UI dev server")
65
+ .allowUnknownOption(true)
66
+ .action(async () => runVite("src/resources/vite.config.ts"));
67
+ program
68
+ .command("vite:cache:clear")
69
+ .description("Clear Vite cache folders (cross-platform)")
70
+ .allowUnknownOption(true)
71
+ .action(async () => clearViteCache());
72
+ program
73
+ .command("test")
74
+ .description("Run Vitest backend tests")
75
+ .allowUnknownOption(true)
76
+ .action(async () => {
77
+ const args = process.argv.slice(3);
78
+ await runTest(args);
79
+ });
80
+ program
81
+ .command("test:watch")
82
+ .description("Run Vitest backend tests in watch mode")
83
+ .allowUnknownOption(true)
84
+ .action(async () => {
85
+ const args = process.argv.slice(3);
86
+ await runTestWatch(args);
87
+ });
88
+ program
89
+ .command("test:coverage")
90
+ .description("Run Vitest backend tests with code coverage")
91
+ .allowUnknownOption(true)
92
+ .action(async () => {
93
+ const args = process.argv.slice(3);
94
+ await runTestCoverage(args);
95
+ });
96
+ program
97
+ .command("test:ui")
98
+ .description("Run Vitest backend tests in UI mode")
99
+ .allowUnknownOption(true)
100
+ .action(async () => {
101
+ const args = process.argv.slice(3);
102
+ await runTestUI(args);
103
+ });
104
+ }
@@ -0,0 +1,20 @@
1
+ // Why: Redis Commander 0.4.5 bundles legacy `connect`/`serve-static`/`send`
2
+ // whose `SendStream#isFresh` reads `http.ServerResponse#_headers`, which
3
+ // Node removed in v15. Without this shim it crashes with:
4
+ // TypeError: Cannot read properties of undefined (reading 'last-modified')
5
+ // When: Loaded via `node --require` before Redis Commander starts.
6
+ // Where: maker-cli redis:view launcher.
7
+ // How: Re-exposes `_headers` on the ServerResponse prototype, backed by the
8
+ // modern `getHeaders()` API. Safe on older Node too (getHeaders is the
9
+ // same data `_headers` used to return).
10
+ const http = require("node:http");
11
+
12
+ if (!("_headers" in http.ServerResponse.prototype)) {
13
+ Object.defineProperty(http.ServerResponse.prototype, "_headers", {
14
+ configurable: true,
15
+ enumerable: false,
16
+ get() {
17
+ return this.getHeaders();
18
+ }
19
+ });
20
+ }
@@ -0,0 +1,47 @@
1
+ import type { Request, Response } from "express";
2
+ import { HttpStatusCodes } from "@/framework/facade.js";
3
+
4
+ /**
5
+ * Why: Returns collection response shape for list pages.
6
+ * When: Used by GET list endpoint.
7
+ * Where: GET /{{controller}} route.
8
+ */
9
+ export const index = async (_req: Request, res: Response) => {
10
+ res.json({ message: "{{controller}} list fetched successfully", data: [] });
11
+ };
12
+
13
+ /**
14
+ * Why: Returns one resource by validated route id.
15
+ * When: Used by detail screens or fetch-by-id calls.
16
+ * Where: GET /{{controller}}/{id} route.
17
+ */
18
+ export const show = async (req: Request, res: Response) => {
19
+ res.json({ message: "{{controller}} fetched successfully", data: { id: req.params.id, name: "" } });
20
+ };
21
+
22
+ /**
23
+ * Why: Creates a new resource from validated request body.
24
+ * When: Used by create form submissions.
25
+ * Where: POST /{{controller}} route.
26
+ */
27
+ export const store = async (_req: Request, res: Response) => {
28
+ res.status(HttpStatusCodes.CREATED).json({ message: "{{controller}} created successfully" });
29
+ };
30
+
31
+ /**
32
+ * Why: Updates an existing resource using id + body validation.
33
+ * When: Used by edit/update form submissions.
34
+ * Where: PUT/PATCH /{{controller}}/{id} route.
35
+ */
36
+ export const update = async (_req: Request, res: Response) => {
37
+ res.json({ message: "{{controller}} updated successfully" });
38
+ };
39
+
40
+ /**
41
+ * Why: Deletes one resource by validated route id.
42
+ * When: Used by delete actions.
43
+ * Where: DELETE /{{controller}}/{id} route.
44
+ */
45
+ export const destroy = async (_req: Request, res: Response) => {
46
+ res.json({ message: "{{controller}} deleted successfully" });
47
+ };
@@ -0,0 +1,48 @@
1
+ import type { Request, Response } from "express";
2
+ import { HttpStatusCodes } from "@/framework/facade.js";
3
+ import { {{tableVariable}} } from "@/modules/{{module}}/database/models/{{controller}}.js";
4
+
5
+ /**
6
+ * Why: Returns collection response shape for list pages.
7
+ * When: Used by GET list endpoint.
8
+ * Where: GET /{{controller}} route.
9
+ */
10
+ export const index = async (_req: Request, res: Response) => {
11
+ res.json({ message: "{{controller}} list fetched successfully", data: [] });
12
+ };
13
+
14
+ /**
15
+ * Why: Returns one resource by validated route id.
16
+ * When: Used by detail screens or fetch-by-id calls.
17
+ * Where: GET /{{controller}}/{id} route.
18
+ */
19
+ export const show = async (req: Request, res: Response) => {
20
+ res.json({ message: "{{controller}} fetched successfully", data: { id: req.params.id, name: "" } });
21
+ };
22
+
23
+ /**
24
+ * Why: Creates a new resource from validated request body.
25
+ * When: Used by create form submissions.
26
+ * Where: POST /{{controller}} route.
27
+ */
28
+ export const store = async (_req: Request, res: Response) => {
29
+ res.status(HttpStatusCodes.CREATED).json({ message: "{{controller}} created successfully" });
30
+ };
31
+
32
+ /**
33
+ * Why: Updates an existing resource using id + body validation.
34
+ * When: Used by edit/update form submissions.
35
+ * Where: PUT/PATCH /{{controller}}/{id} route.
36
+ */
37
+ export const update = async (_req: Request, res: Response) => {
38
+ res.json({ message: "{{controller}} updated successfully" });
39
+ };
40
+
41
+ /**
42
+ * Why: Deletes one resource by validated route id.
43
+ * When: Used by delete actions.
44
+ * Where: DELETE /{{controller}}/{id} route.
45
+ */
46
+ export const destroy = async (_req: Request, res: Response) => {
47
+ res.json({ message: "{{controller}} deleted successfully" });
48
+ };
@@ -0,0 +1,54 @@
1
+ import type { Request, Response } from "express";
2
+ import { HttpStatusCodes } from "@/framework/facade.js";
3
+ import { validate } from "@/framework/facade.js";
4
+ import { Create{{ClassName}}Schema, Update{{ClassName}}Schema, {{ClassName}}IdParamsSchema } from "@/modules/{{module}}/controllers/{{controller}}.schema.js";
5
+
6
+ /**
7
+ * Why: Returns collection response shape for list pages.
8
+ * When: Used by GET list endpoint.
9
+ * Where: GET /{{controller}} route.
10
+ */
11
+ export const index = async (_req: Request, res: Response) => {
12
+ res.json({ message: "{{controller}} list fetched successfully", data: [] });
13
+ };
14
+
15
+ /**
16
+ * Why: Returns one resource by validated route id.
17
+ * When: Used by detail screens or fetch-by-id calls.
18
+ * Where: GET /{{controller}}/{id} route.
19
+ */
20
+ export const show = async (req: Request, res: Response) => {
21
+ const params = await validate({{ClassName}}IdParamsSchema, req.params);
22
+ res.json({ message: "{{controller}} fetched successfully", data: { id: params.id, name: "" } });
23
+ };
24
+
25
+ /**
26
+ * Why: Creates a new resource from validated request body.
27
+ * When: Used by create form submissions.
28
+ * Where: POST /{{controller}} route.
29
+ */
30
+ export const store = async (req: Request, res: Response) => {
31
+ await validate(Create{{ClassName}}Schema, req.body);
32
+ res.status(HttpStatusCodes.CREATED).json({ message: "{{controller}} created successfully" });
33
+ };
34
+
35
+ /**
36
+ * Why: Updates an existing resource using id + body validation.
37
+ * When: Used by edit/update form submissions.
38
+ * Where: PUT/PATCH /{{controller}}/{id} route.
39
+ */
40
+ export const update = async (req: Request, res: Response) => {
41
+ await validate({{ClassName}}IdParamsSchema, req.params);
42
+ await validate(Update{{ClassName}}Schema, req.body);
43
+ res.json({ message: "{{controller}} updated successfully" });
44
+ };
45
+
46
+ /**
47
+ * Why: Deletes one resource by validated route id.
48
+ * When: Used by delete actions.
49
+ * Where: DELETE /{{controller}}/{id} route.
50
+ */
51
+ export const destroy = async (req: Request, res: Response) => {
52
+ await validate({{ClassName}}IdParamsSchema, req.params);
53
+ res.json({ message: "{{controller}} deleted successfully" });
54
+ };
@@ -0,0 +1,14 @@
1
+ import { z } from "@/framework/facade.js";
2
+
3
+ export const Create{{ClassName}}Schema = z.object({
4
+ name: z.string().min(1)
5
+ });
6
+
7
+ export const Update{{ClassName}}Schema = z.object({
8
+ name: z.string().min(1)
9
+ });
10
+
11
+ export const {{ClassName}}IdParamsSchema = z.object({
12
+ id: z.coerce.number().int().positive()
13
+ });
14
+
@@ -0,0 +1,33 @@
1
+ import { z } from "@/framework/facade.js";
2
+
3
+ export const {{ClassName}}ItemSchema = z.object({
4
+ id: z.number(),
5
+ name: z.string()
6
+ });
7
+
8
+ export const Create{{ClassName}}Schema = z.object({
9
+ name: z.string().min(1)
10
+ });
11
+
12
+ export const Update{{ClassName}}Schema = z.object({
13
+ name: z.string().min(1)
14
+ });
15
+
16
+ export const {{ClassName}}IdParamsSchema = z.object({
17
+ id: z.coerce.number().int().positive()
18
+ });
19
+
20
+ export const {{ClassName}}ListResponseSchema = z.object({
21
+ message: z.string(),
22
+ data: z.array({{ClassName}}ItemSchema)
23
+ });
24
+
25
+ export const {{ClassName}}ResponseSchema = z.object({
26
+ message: z.string(),
27
+ data: {{ClassName}}ItemSchema
28
+ });
29
+
30
+ export const {{ClassName}}MessageSchema = z.object({
31
+ message: z.string()
32
+ });
33
+
@@ -0,0 +1,52 @@
1
+ ARG BUN_VERSION=1.4.0
2
+ FROM oven/bun:${BUN_VERSION}-slim AS builder
3
+
4
+ WORKDIR /app
5
+
6
+ ENV APP_URL=http://localhost:3000
7
+ ARG UI=true
8
+ ENV UI=${UI}
9
+
10
+ RUN apt-get update && apt-get install -y --no-install-recommends \
11
+ ca-certificates \
12
+ python3 \
13
+ make \
14
+ g++ \
15
+ && rm -rf /var/lib/apt/lists/*
16
+
17
+ COPY package.json bun.lockb* bun.lock* package-lock.json* ./
18
+ RUN bun install --frozen-lockfile
19
+
20
+ COPY . .
21
+ RUN cp deploy/.env .env || true
22
+ RUN bun src/framework/maker-cli/index.mjs db:schema
23
+ RUN bun run build
24
+
25
+ FROM oven/bun:${BUN_VERSION}-slim AS runner
26
+
27
+ WORKDIR /app
28
+
29
+ ENV NODE_ENV=production
30
+ ENV APP_URL=http://localhost:3000
31
+
32
+ RUN apt-get update && apt-get install -y --no-install-recommends \
33
+ supervisor \
34
+ ca-certificates \
35
+ && rm -rf /var/lib/apt/lists/*
36
+
37
+ COPY --from=builder /app/node_modules ./node_modules
38
+ COPY --from=builder /app/package.json ./package.json
39
+ COPY --from=builder /app/drizzle.config.ts ./drizzle.config.ts
40
+ COPY --from=builder /app/tsconfig.json ./tsconfig.json
41
+ COPY --from=builder /app/dist ./dist
42
+ COPY --from=builder /app/public ./public
43
+ COPY --from=builder /app/src ./src
44
+ COPY --from=builder /app/deploy/scripts ./deploy/scripts
45
+ COPY --from=builder /app/deploy/.env ./.env
46
+
47
+ COPY deploy/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
48
+
49
+ EXPOSE 3000
50
+
51
+ CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
52
+
@@ -0,0 +1,55 @@
1
+ ARG NODE_VERSION=24
2
+ FROM node:${NODE_VERSION}-bookworm-slim AS builder
3
+
4
+ ARG PNPM_VERSION=10.33.2
5
+ ARG UI=true
6
+ ENV UI=${UI}
7
+
8
+ WORKDIR /app
9
+
10
+ ENV APP_URL=http://localhost:3000
11
+
12
+ RUN apt-get update && apt-get install -y --no-install-recommends \
13
+ ca-certificates \
14
+ python3 \
15
+ make \
16
+ g++ \
17
+ && rm -rf /var/lib/apt/lists/*
18
+
19
+ RUN corepack enable && corepack prepare pnpm@${PNPM_VERSION} --activate
20
+
21
+ COPY package.json pnpm-lock.yaml* ./
22
+ RUN if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile; else pnpm install --no-frozen-lockfile; fi
23
+
24
+ COPY . .
25
+ RUN node src/framework/maker-cli/index.mjs db:schema
26
+ RUN pnpm run build
27
+
28
+ FROM node:${NODE_VERSION}-bookworm-slim AS runner
29
+
30
+ WORKDIR /app
31
+
32
+ ENV NODE_ENV=production
33
+ ENV APP_URL=http://localhost:3000
34
+
35
+ RUN apt-get update && apt-get install -y --no-install-recommends \
36
+ supervisor \
37
+ ca-certificates \
38
+ && rm -rf /var/lib/apt/lists/*
39
+
40
+ COPY --from=builder /app/node_modules ./node_modules
41
+ COPY --from=builder /app/package.json ./package.json
42
+ COPY --from=builder /app/drizzle.config.ts ./drizzle.config.ts
43
+ COPY --from=builder /app/tsconfig.json ./tsconfig.json
44
+ COPY --from=builder /app/dist ./dist
45
+ COPY --from=builder /app/public ./public
46
+ COPY --from=builder /app/src ./src
47
+ COPY --from=builder /app/deploy/scripts ./deploy/scripts
48
+ COPY --from=builder /app/deploy/.env ./.env
49
+
50
+ COPY deploy/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
51
+
52
+ EXPOSE 3000
53
+
54
+ CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
55
+
@@ -0,0 +1,51 @@
1
+ ARG NODE_VERSION=24
2
+ FROM node:${NODE_VERSION}-bookworm-slim AS builder
3
+
4
+ WORKDIR /app
5
+
6
+ ENV APP_URL=http://localhost:3000
7
+ ARG UI=true
8
+ ENV UI=${UI}
9
+
10
+ RUN apt-get update && apt-get install -y --no-install-recommends \
11
+ ca-certificates \
12
+ python3 \
13
+ make \
14
+ g++ \
15
+ && rm -rf /var/lib/apt/lists/*
16
+
17
+ COPY package.json package-lock.json* ./
18
+ RUN if [ -f package-lock.json ]; then npm ci --legacy-peer-deps || npm install --legacy-peer-deps; else npm install --legacy-peer-deps; fi
19
+
20
+ COPY . .
21
+ RUN node src/framework/maker-cli/index.mjs db:schema
22
+ RUN npm run build
23
+
24
+ FROM node:${NODE_VERSION}-bookworm-slim AS runner
25
+
26
+ WORKDIR /app
27
+
28
+ ENV NODE_ENV=production
29
+ ENV APP_URL=http://localhost:3000
30
+
31
+ RUN apt-get update && apt-get install -y --no-install-recommends \
32
+ supervisor \
33
+ ca-certificates \
34
+ && rm -rf /var/lib/apt/lists/*
35
+
36
+ COPY --from=builder /app/node_modules ./node_modules
37
+ COPY --from=builder /app/package.json ./package.json
38
+ COPY --from=builder /app/drizzle.config.ts ./drizzle.config.ts
39
+ COPY --from=builder /app/tsconfig.json ./tsconfig.json
40
+ COPY --from=builder /app/dist ./dist
41
+ COPY --from=builder /app/public ./public
42
+ COPY --from=builder /app/src ./src
43
+ COPY --from=builder /app/deploy/scripts ./deploy/scripts
44
+ COPY --from=builder /app/deploy/.env ./.env
45
+
46
+ COPY deploy/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
47
+
48
+ EXPOSE 3000
49
+
50
+ CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
51
+
@@ -0,0 +1,55 @@
1
+ ARG NODE_VERSION=24
2
+ FROM node:${NODE_VERSION}-bookworm-slim AS builder
3
+
4
+ ARG YARN_VERSION=1.22.22
5
+ ARG UI=true
6
+ ENV UI=${UI}
7
+
8
+ WORKDIR /app
9
+
10
+ ENV APP_URL=http://localhost:3000
11
+
12
+ RUN apt-get update && apt-get install -y --no-install-recommends \
13
+ ca-certificates \
14
+ python3 \
15
+ make \
16
+ g++ \
17
+ && rm -rf /var/lib/apt/lists/*
18
+
19
+ RUN corepack enable && corepack prepare yarn@${YARN_VERSION} --activate
20
+
21
+ COPY package.json yarn.lock* ./
22
+ RUN yarn install --immutable
23
+
24
+ COPY . .
25
+ RUN node src/framework/maker-cli/index.mjs db:schema
26
+ RUN yarn build
27
+
28
+ FROM node:${NODE_VERSION}-bookworm-slim AS runner
29
+
30
+ WORKDIR /app
31
+
32
+ ENV NODE_ENV=production
33
+ ENV APP_URL=http://localhost:3000
34
+
35
+ RUN apt-get update && apt-get install -y --no-install-recommends \
36
+ supervisor \
37
+ ca-certificates \
38
+ && rm -rf /var/lib/apt/lists/*
39
+
40
+ COPY --from=builder /app/node_modules ./node_modules
41
+ COPY --from=builder /app/package.json ./package.json
42
+ COPY --from=builder /app/drizzle.config.ts ./drizzle.config.ts
43
+ COPY --from=builder /app/tsconfig.json ./tsconfig.json
44
+ COPY --from=builder /app/dist ./dist
45
+ COPY --from=builder /app/public ./public
46
+ COPY --from=builder /app/src ./src
47
+ COPY --from=builder /app/deploy/scripts ./deploy/scripts
48
+ COPY --from=builder /app/deploy/.env ./.env
49
+
50
+ COPY deploy/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
51
+
52
+ EXPOSE 3000
53
+
54
+ CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
55
+
@@ -0,0 +1,59 @@
1
+ # Deploy
2
+
3
+ Generated from current project .env.
4
+
5
+ - Database mode: {{DATABASE_MODE}}
6
+ - Redis enabled: {{REDIS_STATUS}}
7
+ - Runtime: {{RUNTIME_NAME}}
8
+
9
+ ## Prerequisites
10
+
11
+ - External docker networks exist:
12
+
13
+ ```bash
14
+ docker network create nginx-proxy || true
15
+ docker network create infra || true
16
+ ```
17
+
18
+ - Proxy stack from `server-setup` is running (jwilder + letsencrypt companion).
19
+
20
+ ## Start app stack
21
+
22
+ ```bash
23
+ docker compose --env-file deploy/server/.env --env-file deploy/.env -f deploy/docker-compose.yml up -d --build
24
+ ```
25
+
26
+ Equivalent maker command:
27
+
28
+ ```bash
29
+ bun maker deploy:workflow --app-only
30
+ ```
31
+
32
+ ## DB Import
33
+
34
+ Import SQL dump into local Docker container (auto-detects MySQL or PostgreSQL):
35
+
36
+ ```bash
37
+ bun maker deploy:db:import --file=deploy/nexwire.sql --database=nexwire
38
+ ```
39
+
40
+ PostgreSQL restores into a fresh database by default (drops and recreates the
41
+ target database first). Pass `--no-drop` to keep the existing database.
42
+
43
+ Import SQL dump into remote Docker container (auto-detects MySQL or PostgreSQL):
44
+
45
+ ```bash
46
+ bun maker deploy:db:import:remote --config=deploy/workflow.remote.json --file=deploy/nexwire.sql --database=nexwire
47
+ ```
48
+
49
+ ## Runtime
50
+
51
+ Supervisor starts:
52
+
53
+ - API: `maker serve --prod --runtime={{RUNTIME_NAME}}`
54
+ {{QUEUE_LINE}}- Scheduler: `maker schedule:work --prod --runtime={{RUNTIME_NAME}}`
55
+
56
+ {{REDIS_NOTE}}
57
+
58
+ This deploy style follows `server-setup` and `statistic_postgre` patterns (external `nginx-proxy` + `infra` networks).
59
+
@@ -0,0 +1,45 @@
1
+ name: ${COMPOSE_PROJECT_NAME:-nexwire}
2
+
3
+ services:
4
+ app:
5
+ build:
6
+ context: ..
7
+ dockerfile: deploy/Dockerfile
8
+ args:
9
+ UI: ${UI}
10
+ container_name: ${APP_NAME:-nexwire}-app
11
+ restart: unless-stopped
12
+ working_dir: /app
13
+ ports:
14
+ - "${APP_PORT:-3000}:3000"
15
+ expose:
16
+ - "3000"
17
+ env_file:
18
+ - .env
19
+ environment:
20
+ APP_ENV: production
21
+ APP_PORT: 3000
22
+ APP_URL: ${APP_URL:-http://localhost:3000}
23
+ DATABASE_URL: ${DATABASE_URL}
24
+ {{REDIS_ENV_LINE}} APP_HOST: ${APP_HOST:-localhost}
25
+ VIRTUAL_HOST: ${VIRTUAL_HOST:-}
26
+ VIRTUAL_PORT: ${VIRTUAL_PORT:-3000}
27
+ LETSENCRYPT_HOST: ${LETSENCRYPT_HOST:-}
28
+ LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-}
29
+ volumes:
30
+ - app-storage:/app/src/storage
31
+ networks:
32
+ - infra
33
+ - nginx-proxy
34
+
35
+ volumes:
36
+ app-storage:
37
+
38
+ networks:
39
+ infra:
40
+ external: true
41
+ name: infra
42
+ nginx-proxy:
43
+ external: true
44
+ name: nginx-proxy
45
+