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,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
+
@@ -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
+
@@ -0,0 +1,68 @@
1
+ # App deploy env template (shared for local + remote)
2
+ # Local: use this as deploy/.env
3
+ # Remote: use this as deploy/.env
4
+ # Runtime settings (mail, storage, cors, log level, toggles, expiries) live in
5
+ # src/config/*. Only app basics, secrets, and infra vars belong in this file.
6
+ # ── App ────────────────────────────────────────────
7
+ APP_ENV=production
8
+ APP_NAME=nexwire
9
+ APP_HOST=localhost
10
+ APP_PORT=3000
11
+
12
+ # Full public URL the app is served at (used for links, redirects, CORS)
13
+ # Local: http://localhost:3000 | Remote: https://your-domain.com
14
+ APP_URL=http://localhost:3000
15
+
16
+ # Run "db:migrate --seed" automatically on container start (true/false)
17
+ AUTO_MIGRATE=true
18
+
19
+ # UI origin (only needed when UI is on a different domain than API)
20
+ # Leave empty if UI is served from the same APP_URL or UI=false
21
+ FRONTEND_URL={{FRONTEND_URL}}
22
+
23
+ # ── Reverse Proxy (nginx-proxy) ────────────────────
24
+ # Remote only: nginx-proxy routes by VIRTUAL_HOST and auto-issues Let's Encrypt certs.
25
+ # Leave empty for local-only deploys.
26
+ VIRTUAL_HOST=
27
+ VIRTUAL_PORT=3000
28
+ LETSENCRYPT_HOST=
29
+ LETSENCRYPT_EMAIL=
30
+
31
+ # ── Database ───────────────────────────────────────
32
+ # Set the password and database name to match deploy/server/.env
33
+ DATABASE_URL=mysql://root:change-me-root@mysql-global:3306/nexwire
34
+
35
+ # ── JWT Auth (expiries live in src/config/jwt.ts) ──
36
+ JWT_ACCESS_SECRET={{JWT_ACCESS_SECRET}}
37
+ JWT_REFRESH_SECRET={{JWT_REFRESH_SECRET}}
38
+
39
+ # ── Cookie (name lives in src/config/cookie.ts) ────
40
+ COOKIE_SECRET={{COOKIE_SECRET}}
41
+
42
+ # ── Storage credentials (driver/disk/bucket live in src/config/storage.ts) ──
43
+ STORAGE_ACCESS_KEY_ID={{STORAGE_ACCESS_KEY_ID}}
44
+ STORAGE_SECRET_ACCESS_KEY={{STORAGE_SECRET_ACCESS_KEY}}
45
+
46
+ # ── Mail credentials (host/port/encryption live in src/config/mail.ts) ──
47
+ MAIL_USERNAME=
48
+ MAIL_PASSWORD=
49
+
50
+ # ── Redis ──────────────────────────────────────────
51
+ # Enables/disables cache, session, queue, events, Queue Dashboard (all Redis-backed services)
52
+ REDIS={{REDIS_ENABLED}}
53
+ REDIS_URL=redis://redis-global:6379
54
+ REDIS_PREFIX={{REDIS_PREFIX}}
55
+
56
+ # ── Feature Toggle (build) ─────────────────────────
57
+ # Enable/disable UI build and serving. Set false for API-only mode
58
+ UI={{UI}}
59
+
60
+ # ── Feature Toggle ─────────────────────────────────
61
+ # OpenAPI / Scalar docs at /api-docs. Set true to enable.
62
+ OPEN_API={{OPEN_API}}
63
+ # Socket.IO realtime server. Set false to disable.
64
+ SOCKET={{SOCKET}}
65
+ # Security headers (CSP, HSTS, X-Frame). Set false to disable.
66
+ SECURITY_HEADERS={{SECURITY_HEADERS}}
67
+
68
+
@@ -0,0 +1,68 @@
1
+ # App deploy env template (shared for local + remote)
2
+ # Local: use this as deploy/.env
3
+ # Remote: use this as deploy/.env
4
+ # Runtime settings (mail, storage, cors, log level, toggles, expiries) live in
5
+ # src/config/*. Only app basics, secrets, and infra vars belong in this file.
6
+ # ── App ────────────────────────────────────────────
7
+ APP_ENV=production
8
+ APP_NAME=nexwire
9
+ APP_HOST=localhost
10
+ APP_PORT=3000
11
+
12
+ # Full public URL the app is served at (used for links, redirects, CORS)
13
+ # Local: http://localhost:3000 | Remote: https://your-domain.com
14
+ APP_URL=http://localhost:3000
15
+
16
+ # Run "db:migrate --seed" automatically on container start (true/false)
17
+ AUTO_MIGRATE=true
18
+
19
+ # UI origin (only needed when UI is on a different domain than API)
20
+ # Leave empty if UI is served from the same APP_URL or UI=false
21
+ FRONTEND_URL={{FRONTEND_URL}}
22
+
23
+ # ── Reverse Proxy (nginx-proxy) ────────────────────
24
+ # Remote only: nginx-proxy routes by VIRTUAL_HOST and auto-issues Let's Encrypt certs.
25
+ # Leave empty for local-only deploys.
26
+ VIRTUAL_HOST=
27
+ VIRTUAL_PORT=3000
28
+ LETSENCRYPT_HOST=
29
+ LETSENCRYPT_EMAIL=
30
+
31
+ # ── Database ───────────────────────────────────────
32
+ # Set the password and database name to match deploy/server/.env
33
+ DATABASE_URL=postgres://postgres:change-me-postgres@postgres-global:5432/postgres
34
+
35
+ # ── JWT Auth (expiries live in src/config/jwt.ts) ──
36
+ JWT_ACCESS_SECRET={{JWT_ACCESS_SECRET}}
37
+ JWT_REFRESH_SECRET={{JWT_REFRESH_SECRET}}
38
+
39
+ # ── Cookie (name lives in src/config/cookie.ts) ────
40
+ COOKIE_SECRET={{COOKIE_SECRET}}
41
+
42
+ # ── Storage credentials (driver/disk/bucket live in src/config/storage.ts) ──
43
+ STORAGE_ACCESS_KEY_ID={{STORAGE_ACCESS_KEY_ID}}
44
+ STORAGE_SECRET_ACCESS_KEY={{STORAGE_SECRET_ACCESS_KEY}}
45
+
46
+ # ── Mail credentials (host/port/encryption live in src/config/mail.ts) ──
47
+ MAIL_USERNAME=
48
+ MAIL_PASSWORD=
49
+
50
+ # ── Redis ──────────────────────────────────────────
51
+ # Enables/disables cache, session, queue, events, Queue Dashboard (all Redis-backed services)
52
+ REDIS={{REDIS_ENABLED}}
53
+ REDIS_URL=redis://redis-global:6379
54
+ REDIS_PREFIX={{REDIS_PREFIX}}
55
+
56
+ # ── Feature Toggle (build) ─────────────────────────
57
+ # Enable/disable UI build and serving. Set false for API-only mode
58
+ UI={{UI}}
59
+
60
+ # ── Feature Toggle ─────────────────────────────────
61
+ # OpenAPI / Scalar docs at /api-docs. Set true to enable.
62
+ OPEN_API={{OPEN_API}}
63
+ # Socket.IO realtime server. Set false to disable.
64
+ SOCKET={{SOCKET}}
65
+ # Security headers (CSP, HSTS, X-Frame). Set false to disable.
66
+ SECURITY_HEADERS={{SECURITY_HEADERS}}
67
+
68
+
@@ -0,0 +1,67 @@
1
+ # App deploy env template (shared for local + remote)
2
+ # Local: use this as deploy/.env
3
+ # Remote: use this as deploy/.env
4
+ # Runtime settings (mail, storage, cors, log level, toggles, expiries) live in
5
+ # src/config/*. Only app basics, secrets, and infra vars belong in this file.
6
+ # ── App ────────────────────────────────────────────
7
+ APP_ENV=production
8
+ APP_NAME=nexwire
9
+ APP_HOST=localhost
10
+ APP_PORT=3000
11
+
12
+ # Full public URL the app is served at (used for links, redirects, CORS)
13
+ # Local: http://localhost:3000 | Remote: https://your-domain.com
14
+ APP_URL=http://localhost:3000
15
+
16
+ # Run "db:migrate --seed" automatically on container start (true/false)
17
+ AUTO_MIGRATE=true
18
+
19
+ # UI origin (only needed when UI is on a different domain than API)
20
+ # Leave empty if UI is served from the same APP_URL or UI=false
21
+ FRONTEND_URL={{FRONTEND_URL}}
22
+
23
+ # ── Reverse Proxy (nginx-proxy) ────────────────────
24
+ # Remote only: nginx-proxy routes by VIRTUAL_HOST and auto-issues Let's Encrypt certs.
25
+ # Leave empty for local-only deploys.
26
+ VIRTUAL_HOST=
27
+ VIRTUAL_PORT=3000
28
+ LETSENCRYPT_HOST=
29
+ LETSENCRYPT_EMAIL=
30
+
31
+ # ── Database ───────────────────────────────────────
32
+ DATABASE_URL=sqlite:./src/storage/database/nexwire.sqlite
33
+
34
+ # ── JWT Auth (expiries live in src/config/jwt.ts) ──
35
+ JWT_ACCESS_SECRET={{JWT_ACCESS_SECRET}}
36
+ JWT_REFRESH_SECRET={{JWT_REFRESH_SECRET}}
37
+
38
+ # ── Cookie (name lives in src/config/cookie.ts) ────
39
+ COOKIE_SECRET={{COOKIE_SECRET}}
40
+
41
+ # ── Storage credentials (driver/disk/bucket live in src/config/storage.ts) ──
42
+ STORAGE_ACCESS_KEY_ID={{STORAGE_ACCESS_KEY_ID}}
43
+ STORAGE_SECRET_ACCESS_KEY={{STORAGE_SECRET_ACCESS_KEY}}
44
+
45
+ # ── Mail credentials (host/port/encryption live in src/config/mail.ts) ──
46
+ MAIL_USERNAME=
47
+ MAIL_PASSWORD=
48
+
49
+ # ── Redis ──────────────────────────────────────────
50
+ # Enables/disables cache, session, queue, events, Queue Dashboard (all Redis-backed services)
51
+ REDIS={{REDIS_ENABLED}}
52
+ REDIS_URL=redis://redis-global:6379
53
+ REDIS_PREFIX={{REDIS_PREFIX}}
54
+
55
+ # ── Feature Toggle (build) ─────────────────────────
56
+ # Enable/disable UI build and serving. Set false for API-only mode
57
+ UI={{UI}}
58
+
59
+ # ── Feature Toggle ─────────────────────────────────
60
+ # OpenAPI / Scalar docs at /api-docs. Set true to enable.
61
+ OPEN_API={{OPEN_API}}
62
+ # Socket.IO realtime server. Set false to disable.
63
+ SOCKET={{SOCKET}}
64
+ # Security headers (CSP, HSTS, X-Frame). Set false to disable.
65
+ SECURITY_HEADERS={{SECURITY_HEADERS}}
66
+
67
+
@@ -0,0 +1,41 @@
1
+ #!/bin/sh
2
+ #
3
+ # auto-migrate.sh - Runs database migrations + seeders when the container starts.
4
+ #
5
+ # How it works:
6
+ # supervisord launches this script on every container start:
7
+ # /bin/sh /app/deploy/scripts/auto-migrate.sh bun
8
+ # The 1st argument ("bun") is the runtime used to run the CLI command.
9
+ #
10
+ # The AUTO_MIGRATE environment variable (from .env) decides what happens:
11
+ # AUTO_MIGRATE=true -> run "db:migrate --seed" (apply pending migrations, then seed)
12
+ # AUTO_MIGRATE=false -> do nothing, leave the database untouched.
13
+ #
14
+ # "db:migrate --seed" is safe to run on every start:
15
+ # - it only applies migrations that have not run yet,
16
+ # - the seeders only insert rows that are missing, so no duplicates.
17
+
18
+ set -eu # (set -e: stop on any error; set -u: fail if a variable is unset)
19
+
20
+ # ---- 1. Read the settings ----
21
+ RUNTIME_EXEC="${1:-node}" # runtime to run the CLI: "bun" (falls back to "node")
22
+ AUTO_MIGRATE_RAW="${AUTO_MIGRATE:-false}" # raw value of AUTO_MIGRATE, "false" if not set
23
+
24
+ # Normalize the value so "TRUE", "True", "true ", "true" all mean the same thing:
25
+ # tr -d '\r' -> remove carriage returns (files edited on Windows)
26
+ # tr '[:upper:]' ... -> lowercase everything
27
+ # sed ... trim -> remove leading/trailing spaces
28
+ AUTO_MIGRATE_NORMALIZED=$(echo "$AUTO_MIGRATE_RAW" | tr -d '\r' | tr '[:upper:]' '[:lower:]' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
29
+
30
+ # ---- 2. Decide: migrate or skip ----
31
+ case "$AUTO_MIGRATE_NORMALIZED" in
32
+ true|1|yes)
33
+ # AUTO_MIGRATE is on -> run pending migrations, then seed the database.
34
+ exec "$RUNTIME_EXEC" src/framework/maker-cli/index.mjs db:migrate --seed
35
+ ;;
36
+ *)
37
+ # AUTO_MIGRATE is off -> leave the database untouched.
38
+ echo "Skipping migrations (AUTO_MIGRATE=$AUTO_MIGRATE_RAW)"
39
+ ;;
40
+ esac
41
+
@@ -0,0 +1,78 @@
1
+ # Server Deploy (Shared Infra)
2
+
3
+ This stack is shared by multiple apps on one server.
4
+
5
+ ## Includes
6
+
7
+ - jwilder nginx-proxy
8
+ - letsencrypt companion
9
+ - mysql-global
10
+ - postgres-global
11
+ {{REDIS_INCLUDE_LINE}}
12
+ - phpmyadmin + pgadmin
13
+
14
+ {{REDIS_CONFIG_LINE}}
15
+
16
+ ## Setup
17
+
18
+ ```bash
19
+ cp deploy/server/.env.example deploy/server/.env
20
+ cp deploy/server/.env.local.example deploy/server/.env.local
21
+ docker network create nginx-proxy || true
22
+ docker network create infra || true
23
+ docker compose --env-file deploy/server/.env --env-file deploy/server/.env.local -f deploy/server/docker-compose.yml up -d
24
+ ```
25
+
26
+ Equivalent maker command:
27
+
28
+ ```bash
29
+ bun maker deploy:workflow --server-only
30
+ ```
31
+
32
+ Local Docker Desktop:
33
+ - Proxy: `http://localhost:8081`
34
+ - phpMyAdmin direct: `http://localhost:8082`
35
+ - pgAdmin direct: `http://localhost:8083`
36
+
37
+ Remote server deploy:
38
+ - Keep `PROXY_HTTP_PORT=80` and `PROXY_HTTPS_PORT=443`
39
+ - Keep `PHPMYADMIN_LOCAL_PORT=127.0.0.1:8082` and `PGADMIN_LOCAL_PORT=127.0.0.1:8083` to avoid exposing admin UIs publicly
40
+ - Optionally remove `.env.local`
41
+
42
+ ## Env File Precedence (Important)
43
+
44
+ This stack intentionally uses two env files together:
45
+
46
+ ```bash
47
+ --env-file deploy/server/.env --env-file deploy/server/.env.local
48
+ ```
49
+
50
+ Rule:
51
+ - Values in `deploy/server/.env.local` override same keys from `deploy/server/.env`.
52
+
53
+ Why:
54
+ - `deploy/server/.env` is your shared base (works for remote/server defaults).
55
+ - `deploy/server/.env.local` is for Docker Desktop-only overrides.
56
+
57
+ Typical split:
58
+ - `deploy/server/.env`
59
+ - `PROXY_HTTP_PORT=80`
60
+ - `PROXY_HTTPS_PORT=443`
61
+ - production domains like `PHPMYADMIN_DOMAIN=pma.example.com`
62
+ - `deploy/server/.env.local`
63
+ - `PROXY_HTTP_PORT=8081`
64
+ - `PROXY_HTTPS_PORT=8443`
65
+ - local domains like `PHPMYADMIN_DOMAIN=pma.localhost`
66
+
67
+ Result on local Docker Desktop:
68
+ - Effective proxy ports become `8081/8443` (from `.env.local`).
69
+ - Effective local domains become `pma.localhost` / `pga.localhost` (from `.env.local`).
70
+
71
+ Result on remote server:
72
+ - Use only `deploy/server/.env` (or keep `.env.local` empty/unused).
73
+ - Effective proxy ports stay `80/443`.
74
+
75
+ Then each app deploy joins external networks `nginx-proxy` and `infra`.
76
+
77
+ Custom per-domain nginx overrides are in `deploy/server/nginx-vhost/`.
78
+
@@ -0,0 +1,120 @@
1
+ services:
2
+ nginx-proxy:
3
+ image: jwilder/nginx-proxy
4
+ container_name: nginx-proxy
5
+ restart: unless-stopped
6
+ ports:
7
+ - "${PROXY_HTTP_PORT:-80}:80"
8
+ - "${PROXY_HTTPS_PORT:-443}:443"
9
+ volumes:
10
+ - /var/run/docker.sock:/tmp/docker.sock:ro
11
+ - ./certs:/etc/nginx/certs
12
+ - ./nginx-vhost:/etc/nginx/vhost.d
13
+ - ./html:/usr/share/nginx/html
14
+ labels:
15
+ com.github.nginx-proxy.nginx: "true"
16
+ networks:
17
+ - nginx-proxy
18
+
19
+ letsencrypt:
20
+ image: jrcs/letsencrypt-nginx-proxy-companion
21
+ container_name: nginx-letsencrypt
22
+ restart: unless-stopped
23
+ depends_on:
24
+ - nginx-proxy
25
+ environment:
26
+ NGINX_PROXY_CONTAINER: nginx-proxy
27
+ DEFAULT_EMAIL: ${LETSENCRYPT_EMAIL}
28
+ volumes:
29
+ - /var/run/docker.sock:/var/run/docker.sock:ro
30
+ - ./certs:/etc/nginx/certs
31
+ - ./nginx-vhost:/etc/nginx/vhost.d
32
+ - ./html:/usr/share/nginx/html
33
+ - ./acme:/etc/acme.sh
34
+ networks:
35
+ - nginx-proxy
36
+
37
+ mysql:
38
+ image: mysql:8.4
39
+ container_name: mysql-global
40
+ restart: unless-stopped
41
+ environment:
42
+ MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
43
+ MYSQL_DATABASE: ${MYSQL_DATABASE}
44
+ volumes:
45
+ - mysql_global_data:/var/lib/mysql
46
+ ports:
47
+ - "${MYSQL_PORT:-4000}:3306"
48
+ networks:
49
+ - infra
50
+
51
+ postgres:
52
+ image: postgres:16-alpine
53
+ container_name: postgres-global
54
+ restart: unless-stopped
55
+ environment:
56
+ POSTGRES_USER: ${POSTGRES_USER}
57
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
58
+ POSTGRES_DB: ${POSTGRES_DB}
59
+ volumes:
60
+ - postgres_global_data:/var/lib/postgresql/data
61
+ ports:
62
+ - "${POSTGRES_PORT:-4001}:5432"
63
+ networks:
64
+ - infra
65
+
66
+ phpmyadmin:
67
+ image: phpmyadmin:5-apache
68
+ container_name: phpmyadmin
69
+ restart: unless-stopped
70
+ environment:
71
+ PMA_HOST: mysql-global
72
+ PMA_PORT: 3306
73
+ PMA_ARBITRARY: 1
74
+ VIRTUAL_HOST: ${PHPMYADMIN_DOMAIN}
75
+ VIRTUAL_PORT: 80
76
+ LETSENCRYPT_HOST: ${PHPMYADMIN_DOMAIN}
77
+ LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
78
+ ports:
79
+ - "${PHPMYADMIN_LOCAL_PORT:-127.0.0.1:8082}:80"
80
+ networks:
81
+ - infra
82
+ - nginx-proxy
83
+
84
+ pgadmin:
85
+ image: dpage/pgadmin4:latest
86
+ container_name: pgadmin
87
+ restart: unless-stopped
88
+ depends_on:
89
+ - postgres
90
+ environment:
91
+ PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
92
+ PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
93
+ PGADMIN_CONFIG_SERVER_MODE: "True"
94
+ PGADMIN_SERVER_JSON_FILE: /pgadmin4/servers.json
95
+ VIRTUAL_HOST: ${PGADMIN_DOMAIN}
96
+ VIRTUAL_PORT: 80
97
+ LETSENCRYPT_HOST: ${PGADMIN_DOMAIN}
98
+ LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
99
+ volumes:
100
+ - pgadmin_data:/var/lib/pgadmin
101
+ - ./pgadmin/servers.json:/pgadmin4/servers.json:ro
102
+ ports:
103
+ - "${PGADMIN_LOCAL_PORT:-127.0.0.1:8083}:80"
104
+ networks:
105
+ - infra
106
+ - nginx-proxy
107
+
108
+ volumes:
109
+ mysql_global_data:
110
+ postgres_global_data:
111
+ pgadmin_data:
112
+
113
+ networks:
114
+ nginx-proxy:
115
+ external: true
116
+ name: nginx-proxy
117
+ infra:
118
+ external: true
119
+ name: infra
120
+
@@ -0,0 +1,133 @@
1
+ services:
2
+ nginx-proxy:
3
+ image: jwilder/nginx-proxy
4
+ container_name: nginx-proxy
5
+ restart: unless-stopped
6
+ ports:
7
+ - "${PROXY_HTTP_PORT:-80}:80"
8
+ - "${PROXY_HTTPS_PORT:-443}:443"
9
+ volumes:
10
+ - /var/run/docker.sock:/tmp/docker.sock:ro
11
+ - ./certs:/etc/nginx/certs
12
+ - ./nginx-vhost:/etc/nginx/vhost.d
13
+ - ./html:/usr/share/nginx/html
14
+ labels:
15
+ com.github.nginx-proxy.nginx: "true"
16
+ networks:
17
+ - nginx-proxy
18
+
19
+ letsencrypt:
20
+ image: jrcs/letsencrypt-nginx-proxy-companion
21
+ container_name: nginx-letsencrypt
22
+ restart: unless-stopped
23
+ depends_on:
24
+ - nginx-proxy
25
+ environment:
26
+ NGINX_PROXY_CONTAINER: nginx-proxy
27
+ DEFAULT_EMAIL: ${LETSENCRYPT_EMAIL}
28
+ volumes:
29
+ - /var/run/docker.sock:/var/run/docker.sock:ro
30
+ - ./certs:/etc/nginx/certs
31
+ - ./nginx-vhost:/etc/nginx/vhost.d
32
+ - ./html:/usr/share/nginx/html
33
+ - ./acme:/etc/acme.sh
34
+ networks:
35
+ - nginx-proxy
36
+
37
+ mysql:
38
+ image: mysql:8.4
39
+ container_name: mysql-global
40
+ restart: unless-stopped
41
+ environment:
42
+ MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
43
+ MYSQL_DATABASE: ${MYSQL_DATABASE}
44
+ volumes:
45
+ - mysql_global_data:/var/lib/mysql
46
+ ports:
47
+ - "${MYSQL_PORT:-4000}:3306"
48
+ networks:
49
+ - infra
50
+
51
+ postgres:
52
+ image: postgres:16-alpine
53
+ container_name: postgres-global
54
+ restart: unless-stopped
55
+ environment:
56
+ POSTGRES_USER: ${POSTGRES_USER}
57
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
58
+ POSTGRES_DB: ${POSTGRES_DB}
59
+ volumes:
60
+ - postgres_global_data:/var/lib/postgresql/data
61
+ ports:
62
+ - "${POSTGRES_PORT:-4001}:5432"
63
+ networks:
64
+ - infra
65
+
66
+ redis:
67
+ image: redis:7-alpine
68
+ container_name: redis-global
69
+ restart: unless-stopped
70
+ ports:
71
+ - "6379:6379"
72
+ volumes:
73
+ - redis_global_data:/data
74
+ command: ["redis-server", "--appendonly", "yes", "--maxmemory", "512mb", "--maxmemory-policy", "noeviction"]
75
+ networks:
76
+ - infra
77
+
78
+ phpmyadmin:
79
+ image: phpmyadmin:5-apache
80
+ container_name: phpmyadmin
81
+ restart: unless-stopped
82
+ environment:
83
+ PMA_HOST: mysql-global
84
+ PMA_PORT: 3306
85
+ PMA_ARBITRARY: 1
86
+ VIRTUAL_HOST: ${PHPMYADMIN_DOMAIN}
87
+ VIRTUAL_PORT: 80
88
+ LETSENCRYPT_HOST: ${PHPMYADMIN_DOMAIN}
89
+ LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
90
+ ports:
91
+ - "${PHPMYADMIN_LOCAL_PORT:-127.0.0.1:8082}:80"
92
+ networks:
93
+ - infra
94
+ - nginx-proxy
95
+
96
+ pgadmin:
97
+ image: dpage/pgadmin4:latest
98
+ container_name: pgadmin
99
+ restart: unless-stopped
100
+ depends_on:
101
+ - postgres
102
+ environment:
103
+ PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
104
+ PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
105
+ PGADMIN_CONFIG_SERVER_MODE: "True"
106
+ PGADMIN_SERVER_JSON_FILE: /pgadmin4/servers.json
107
+ VIRTUAL_HOST: ${PGADMIN_DOMAIN}
108
+ VIRTUAL_PORT: 80
109
+ LETSENCRYPT_HOST: ${PGADMIN_DOMAIN}
110
+ LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
111
+ volumes:
112
+ - pgadmin_data:/var/lib/pgadmin
113
+ - ./pgadmin/servers.json:/pgadmin4/servers.json:ro
114
+ ports:
115
+ - "${PGADMIN_LOCAL_PORT:-127.0.0.1:8083}:80"
116
+ networks:
117
+ - infra
118
+ - nginx-proxy
119
+
120
+ volumes:
121
+ mysql_global_data:
122
+ postgres_global_data:
123
+ redis_global_data:
124
+ pgadmin_data:
125
+
126
+ networks:
127
+ nginx-proxy:
128
+ external: true
129
+ name: nginx-proxy
130
+ infra:
131
+ external: true
132
+ name: infra
133
+