create-nexgen 1.0.4

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 (240) hide show
  1. package/package.json +26 -0
  2. package/src/index.js +108 -0
  3. package/template/.dockerignore +14 -0
  4. package/template/.env +58 -0
  5. package/template/.env.example +59 -0
  6. package/template/.prettierignore +5 -0
  7. package/template/.prettierrc +8 -0
  8. package/template/README.md +447 -0
  9. package/template/drizzle.config.ts +29 -0
  10. package/template/eslint.config.js +52 -0
  11. package/template/gitignore-stub +24 -0
  12. package/template/package.json +96 -0
  13. package/template/public/assets/AuthLayout-CbswhpjJ.js +1 -0
  14. package/template/public/assets/Button-_7aQ7gHL.js +1 -0
  15. package/template/public/assets/Input-CLNJXmKc.css +1 -0
  16. package/template/public/assets/Input-z8GI8Aqo.js +1 -0
  17. package/template/public/assets/InputPasswordToggle-BxlzVGp3.js +1 -0
  18. package/template/public/assets/InputPasswordToggle-C77FI9Eg.css +1 -0
  19. package/template/public/assets/Layout-DotR1sQC.js +1 -0
  20. package/template/public/assets/Refresh-BdqsPPBC.js +1 -0
  21. package/template/public/assets/admin-ui-CU34rLdN.js +1 -0
  22. package/template/public/assets/bootstrap-icons-BeopsB42.woff +0 -0
  23. package/template/public/assets/bootstrap-icons-mSm7cUeB.woff2 +0 -0
  24. package/template/public/assets/dashboard-CwybEyLc.js +1 -0
  25. package/template/public/assets/dashboard-Dc4d-Pi7.css +1 -0
  26. package/template/public/assets/forgetPassword-CKEJaXsq.js +1 -0
  27. package/template/public/assets/index-Bleyx5dm.js +64 -0
  28. package/template/public/assets/index-DUw8E6Yg.css +1 -0
  29. package/template/public/assets/login-DC7PTlQF.js +1 -0
  30. package/template/public/assets/realtime-test-BPQdrFym.css +1 -0
  31. package/template/public/assets/realtime-test-tQZ0rBEJ.js +1 -0
  32. package/template/public/assets/register-3O7Qs28C.js +1 -0
  33. package/template/public/assets/resetPassword-A5AzMWKs.js +1 -0
  34. package/template/public/assets/verifyEmail-DDBEQHOv.js +1 -0
  35. package/template/public/index.html +17 -0
  36. package/template/src/database/migrations/mysql/0000_init.sql +73 -0
  37. package/template/src/database/migrations/mysql/meta/0000_snapshot.json +484 -0
  38. package/template/src/database/migrations/mysql/meta/_journal.json +13 -0
  39. package/template/src/database/schema.ts +4 -0
  40. package/template/src/env.ts +107 -0
  41. package/template/src/framework/cache/cache.ts +81 -0
  42. package/template/src/framework/database/connection.ts +168 -0
  43. package/template/src/framework/database/optional-db-drivers.d.ts +9 -0
  44. package/template/src/framework/database/paginate.ts +200 -0
  45. package/template/src/framework/database/schema.ts +26 -0
  46. package/template/src/framework/database/seed.ts +33 -0
  47. package/template/src/framework/events/dispatcher.ts +57 -0
  48. package/template/src/framework/facade.ts +27 -0
  49. package/template/src/framework/http/app.ts +61 -0
  50. package/template/src/framework/http/cors.ts +19 -0
  51. package/template/src/framework/http/logger.ts +85 -0
  52. package/template/src/framework/http/openapi.ts +34 -0
  53. package/template/src/framework/http/ratelimiter.ts +13 -0
  54. package/template/src/framework/http/router.ts +76 -0
  55. package/template/src/framework/http/static.ts +33 -0
  56. package/template/src/framework/http/validation.ts +24 -0
  57. package/template/src/framework/kernel.ts +40 -0
  58. package/template/src/framework/maker-cli/src/index.mjs +51 -0
  59. package/template/src/framework/maker-cli/src/levels/level-1/env-db.mjs +57 -0
  60. package/template/src/framework/maker-cli/src/levels/level-1/file-ops.mjs +30 -0
  61. package/template/src/framework/maker-cli/src/levels/level-1/flags.mjs +16 -0
  62. package/template/src/framework/maker-cli/src/levels/level-1/help.mjs +24 -0
  63. package/template/src/framework/maker-cli/src/levels/level-1/naming.mjs +13 -0
  64. package/template/src/framework/maker-cli/src/levels/level-1/process.mjs +47 -0
  65. package/template/src/framework/maker-cli/src/levels/level-2/db/core.mjs +299 -0
  66. package/template/src/framework/maker-cli/src/levels/level-2/db/index.mjs +177 -0
  67. package/template/src/framework/maker-cli/src/levels/level-2/deploy/core.mjs +635 -0
  68. package/template/src/framework/maker-cli/src/levels/level-2/deploy/index.mjs +145 -0
  69. package/template/src/framework/maker-cli/src/levels/level-2/module/core.mjs +707 -0
  70. package/template/src/framework/maker-cli/src/levels/level-2/module/index.mjs +116 -0
  71. package/template/src/framework/maker-cli/src/levels/level-2/runtime/build-frontend.mjs +16 -0
  72. package/template/src/framework/maker-cli/src/levels/level-2/runtime/core.mjs +311 -0
  73. package/template/src/framework/maker-cli/src/levels/level-2/runtime/index.mjs +71 -0
  74. package/template/src/framework/maker-cli/stubs/controller/openapi.ts.stub +55 -0
  75. package/template/src/framework/maker-cli/stubs/controller/openapi.with-model.ts.stub +56 -0
  76. package/template/src/framework/maker-cli/stubs/controller/plain.ts.stub +57 -0
  77. package/template/src/framework/maker-cli/stubs/controller/schema.plain.ts.stub +13 -0
  78. package/template/src/framework/maker-cli/stubs/controller/schema.ts.stub +32 -0
  79. package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.bun.stub +49 -0
  80. package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.pnpm.stub +53 -0
  81. package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.stub +49 -0
  82. package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.yarn.stub +53 -0
  83. package/template/src/framework/maker-cli/stubs/deploy/README.stub +55 -0
  84. package/template/src/framework/maker-cli/stubs/deploy/compose/mysql.server.stub +29 -0
  85. package/template/src/framework/maker-cli/stubs/deploy/compose/postgres.server.stub +29 -0
  86. package/template/src/framework/maker-cli/stubs/deploy/compose/sqlite.stub +29 -0
  87. package/template/src/framework/maker-cli/stubs/deploy/env/mysql.server.stub +73 -0
  88. package/template/src/framework/maker-cli/stubs/deploy/env/postgres.server.stub +73 -0
  89. package/template/src/framework/maker-cli/stubs/deploy/env/sqlite.stub +72 -0
  90. package/template/src/framework/maker-cli/stubs/deploy/scripts/auto-migrate.sh.stub +15 -0
  91. package/template/src/framework/maker-cli/stubs/deploy/server/README.stub +77 -0
  92. package/template/src/framework/maker-cli/stubs/deploy/server/compose/noredis.stub +118 -0
  93. package/template/src/framework/maker-cli/stubs/deploy/server/compose/redis.dev.stub +131 -0
  94. package/template/src/framework/maker-cli/stubs/deploy/server/compose/redis.stub +129 -0
  95. package/template/src/framework/maker-cli/stubs/deploy/server/env/local.example.stub +10 -0
  96. package/template/src/framework/maker-cli/stubs/deploy/server/env/noredis.stub +24 -0
  97. package/template/src/framework/maker-cli/stubs/deploy/server/env/redis.stub +24 -0
  98. package/template/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/README.stub +15 -0
  99. package/template/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/app.example.com.stub +12 -0
  100. package/template/src/framework/maker-cli/stubs/deploy/server/pgadmin/servers.stub +13 -0
  101. package/template/src/framework/maker-cli/stubs/deploy/server/redis/redis.conf.stub +6 -0
  102. package/template/src/framework/maker-cli/stubs/deploy/supervisor/noredis.stub +53 -0
  103. package/template/src/framework/maker-cli/stubs/deploy/supervisor/redis.stub +69 -0
  104. package/template/src/framework/maker-cli/stubs/deploy/workflow/local.json.stub +24 -0
  105. package/template/src/framework/maker-cli/stubs/deploy/workflow/remote.json.stub +20 -0
  106. package/template/src/framework/maker-cli/stubs/example/console.ts.stub +33 -0
  107. package/template/src/framework/maker-cli/stubs/example/controller.ts.stub +503 -0
  108. package/template/src/framework/maker-cli/stubs/example/job.ts.stub +74 -0
  109. package/template/src/framework/maker-cli/stubs/example/route.api.ts.stub +206 -0
  110. package/template/src/framework/maker-cli/stubs/example/schema.ts.stub +41 -0
  111. package/template/src/framework/maker-cli/stubs/job/name.ts.stub +24 -0
  112. package/template/src/framework/maker-cli/stubs/model/name.mysql.ts.stub +8 -0
  113. package/template/src/framework/maker-cli/stubs/model/name.postgresql.ts.stub +8 -0
  114. package/template/src/framework/maker-cli/stubs/model/name.sqlite.ts.stub +8 -0
  115. package/template/src/framework/maker-cli/stubs/notification/NotificationBell.vue.stub +218 -0
  116. package/template/src/framework/maker-cli/stubs/notification/controller.ts.stub +85 -0
  117. package/template/src/framework/maker-cli/stubs/notification/index.vue.stub +211 -0
  118. package/template/src/framework/maker-cli/stubs/notification/job.ts.stub +12 -0
  119. package/template/src/framework/maker-cli/stubs/notification/route.api.ts.stub +49 -0
  120. package/template/src/framework/maker-cli/stubs/notification/schema.ts.stub +25 -0
  121. package/template/src/framework/maker-cli/stubs/route/api.ts.stub +79 -0
  122. package/template/src/framework/maker-cli/stubs/route/plain.ts.stub +10 -0
  123. package/template/src/framework/maker-cli/stubs/schedule/name.ts.stub +35 -0
  124. package/template/src/framework/maker-cli/stubs/seeder/name.ts.stub +17 -0
  125. package/template/src/framework/modules/discover.ts +54 -0
  126. package/template/src/framework/modules/routes.ts +26 -0
  127. package/template/src/framework/notification/index.ts +109 -0
  128. package/template/src/framework/queue/clear.ts +20 -0
  129. package/template/src/framework/queue/queue.ts +213 -0
  130. package/template/src/framework/queue/ui.ts +104 -0
  131. package/template/src/framework/queue/worker.ts +33 -0
  132. package/template/src/framework/realtime/broadcast.ts +27 -0
  133. package/template/src/framework/realtime/index.ts +1 -0
  134. package/template/src/framework/realtime/socket-cookie.ts +65 -0
  135. package/template/src/framework/realtime/socket.ts +132 -0
  136. package/template/src/framework/realtime/types.ts +6 -0
  137. package/template/src/framework/realtime/ui.ts +16 -0
  138. package/template/src/framework/redis/client.ts +126 -0
  139. package/template/src/framework/scheduler/lock.ts +124 -0
  140. package/template/src/framework/scheduler/run.ts +26 -0
  141. package/template/src/framework/scheduler/scheduler.ts +82 -0
  142. package/template/src/framework/server.ts +147 -0
  143. package/template/src/framework/session/session.ts +116 -0
  144. package/template/src/framework/storage/storage.ts +743 -0
  145. package/template/src/framework/support/cookie.ts +78 -0
  146. package/template/src/framework/support/jwt.ts +45 -0
  147. package/template/src/framework/support/lifecycle.ts +35 -0
  148. package/template/src/framework/support/logger.ts +102 -0
  149. package/template/src/framework/support/mail.ts +43 -0
  150. package/template/src/framework/support/password.ts +23 -0
  151. package/template/src/framework/support/url.ts +25 -0
  152. package/template/src/middlewares/auth-middleware.ts +98 -0
  153. package/template/src/middlewares/role-middleware.ts +24 -0
  154. package/template/src/modules/auth/controllers/auth.controller.ts +445 -0
  155. package/template/src/modules/auth/controllers/auth.helpers.ts +110 -0
  156. package/template/src/modules/auth/controllers/auth.schema.ts +102 -0
  157. package/template/src/modules/auth/controllers/role.controller.ts +25 -0
  158. package/template/src/modules/auth/database/models/notifications.ts +22 -0
  159. package/template/src/modules/auth/database/models/role.ts +14 -0
  160. package/template/src/modules/auth/database/models/user.ts +46 -0
  161. package/template/src/modules/auth/database/seeders/role.ts +19 -0
  162. package/template/src/modules/auth/database/seeders/user.ts +33 -0
  163. package/template/src/modules/auth/jobs/forgetpass.ts +18 -0
  164. package/template/src/modules/auth/jobs/registeruser.ts +31 -0
  165. package/template/src/modules/auth/jobs/verifyemail.ts +18 -0
  166. package/template/src/modules/auth/routes/api.ts +151 -0
  167. package/template/src/modules/auth/routes/role.ts +39 -0
  168. package/template/src/modules/welcome/controllers/welcome.controller.ts +14 -0
  169. package/template/src/modules/welcome/controllers/welcome.schema.ts +6 -0
  170. package/template/src/modules/welcome/database/models/welcome.ts +6 -0
  171. package/template/src/modules/welcome/routes/api.ts +20 -0
  172. package/template/src/resources/index.html +16 -0
  173. package/template/src/resources/src/App.vue +5 -0
  174. package/template/src/resources/src/assets/css/styles.css +14934 -0
  175. package/template/src/resources/src/assets/css/styles.css.map +1 -0
  176. package/template/src/resources/src/assets/images/favicon/favicon.ico +0 -0
  177. package/template/src/resources/src/assets/images/favicon/favicon1.ico +0 -0
  178. package/template/src/resources/src/assets/images/logo-1.png +0 -0
  179. package/template/src/resources/src/assets/images/logo-dark-sm.png +0 -0
  180. package/template/src/resources/src/assets/images/logo-dark.png +0 -0
  181. package/template/src/resources/src/assets/images/logo-dark1.png +0 -0
  182. package/template/src/resources/src/assets/images/logo-sm.png +0 -0
  183. package/template/src/resources/src/assets/images/logo1.png +0 -0
  184. package/template/src/resources/src/assets/images/logo2.png +0 -0
  185. package/template/src/resources/src/assets/scss/custom.css +217 -0
  186. package/template/src/resources/src/assets/scss/custom.css.map +1 -0
  187. package/template/src/resources/src/assets/scss/custom.scss +1100 -0
  188. package/template/src/resources/src/components/Button.vue +35 -0
  189. package/template/src/resources/src/components/Checkbox.vue +29 -0
  190. package/template/src/resources/src/components/FloatButton.vue +36 -0
  191. package/template/src/resources/src/components/Href.vue +32 -0
  192. package/template/src/resources/src/components/Input.vue +227 -0
  193. package/template/src/resources/src/components/InputGroup.vue +153 -0
  194. package/template/src/resources/src/components/InputPasswordToggle.vue +226 -0
  195. package/template/src/resources/src/components/Modal.vue +102 -0
  196. package/template/src/resources/src/components/Pagebar.vue +28 -0
  197. package/template/src/resources/src/components/Refresh.vue +26 -0
  198. package/template/src/resources/src/components/Select.vue +390 -0
  199. package/template/src/resources/src/components/Spinner.vue +42 -0
  200. package/template/src/resources/src/components/Switch.vue +65 -0
  201. package/template/src/resources/src/components/TextArea.vue +121 -0
  202. package/template/src/resources/src/components/Toast.vue +56 -0
  203. package/template/src/resources/src/components/datatable/DataTableSkeleton.vue +99 -0
  204. package/template/src/resources/src/components/datatable/Pagination.vue +161 -0
  205. package/template/src/resources/src/components/datatable/SelectOpption.vue +54 -0
  206. package/template/src/resources/src/components/datatable/index.vue +237 -0
  207. package/template/src/resources/src/composables/useAuth.ts +52 -0
  208. package/template/src/resources/src/composables/useBrowserDetect.ts +5 -0
  209. package/template/src/resources/src/composables/useDialog.ts +5 -0
  210. package/template/src/resources/src/composables/useGum.ts +3 -0
  211. package/template/src/resources/src/composables/usePulse.ts +5 -0
  212. package/template/src/resources/src/env.d.ts +20 -0
  213. package/template/src/resources/src/helpers/nformatter.ts +10 -0
  214. package/template/src/resources/src/helpers/utils.ts +68 -0
  215. package/template/src/resources/src/layouts/AuthLayout.vue +20 -0
  216. package/template/src/resources/src/layouts/Layout/Footer.vue +23 -0
  217. package/template/src/resources/src/layouts/Layout/Header.vue +90 -0
  218. package/template/src/resources/src/layouts/Layout/Sidebar.vue +137 -0
  219. package/template/src/resources/src/layouts/Layout/index.vue +76 -0
  220. package/template/src/resources/src/main.ts +27 -0
  221. package/template/src/resources/src/pages/auth/forgetPassword.vue +76 -0
  222. package/template/src/resources/src/pages/auth/login.vue +93 -0
  223. package/template/src/resources/src/pages/auth/register.vue +130 -0
  224. package/template/src/resources/src/pages/auth/resetPassword.vue +119 -0
  225. package/template/src/resources/src/pages/auth/verifyEmail.vue +60 -0
  226. package/template/src/resources/src/pages/dashboard/index.vue +76 -0
  227. package/template/src/resources/src/plugins/axios.ts +33 -0
  228. package/template/src/resources/src/plugins/browserDetect.ts +55 -0
  229. package/template/src/resources/src/plugins/dialog.ts +167 -0
  230. package/template/src/resources/src/plugins/gum.ts +343 -0
  231. package/template/src/resources/src/plugins/pulse.ts +141 -0
  232. package/template/src/resources/src/plugins/routeProgress.ts +87 -0
  233. package/template/src/resources/src/router/index.ts +85 -0
  234. package/template/src/resources/src/stores/admin-ui.ts +148 -0
  235. package/template/src/resources/src/stores/auth.ts +151 -0
  236. package/template/src/resources/tsconfig.json +19 -0
  237. package/template/src/resources/vite.config.ts +43 -0
  238. package/template/src/storage/logs/app.log +20179 -0
  239. package/template/src/storage/logs/fatal.log +727 -0
  240. package/template/tsconfig.json +20 -0
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "create-nexgen",
3
+ "version": "1.0.4",
4
+ "type": "module",
5
+ "description": "Scaffold a new Nexgen project",
6
+ "bin": {
7
+ "create-nexgen": "src/index.js",
8
+ "nexgen": "src/index.js"
9
+ },
10
+ "files": [
11
+ "src",
12
+ "template"
13
+ ],
14
+ "scripts": {
15
+ "prepublish": "node ../../scripts/sync-template.mjs"
16
+ },
17
+ "engines": {
18
+ "node": ">=18"
19
+ },
20
+ "keywords": [
21
+ "nexgen",
22
+ "scaffold",
23
+ "cli"
24
+ ],
25
+ "license": "MIT"
26
+ }
package/src/index.js ADDED
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { readFileSync, existsSync, cpSync, mkdirSync, writeFileSync, renameSync, readdirSync } from "node:fs";
4
+ import { join, dirname } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { createInterface } from "node:readline";
7
+
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ const TEMPLATE_DIR = join(__dirname, "..", "template");
10
+ const PKG_PATH = join(__dirname, "..", "package.json");
11
+
12
+ const pkg = JSON.parse(readFileSync(PKG_PATH, "utf-8"));
13
+ const version = pkg.version;
14
+
15
+ function ask(query) {
16
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
17
+ return new Promise((resolve) => rl.question(query, (a) => { rl.close(); resolve(a.trim()); }));
18
+ }
19
+
20
+ function detectPackageManager() {
21
+ if (typeof process !== "undefined" && process.isBun) return "bun";
22
+ const ua = process.env.npm_config_user_agent || "";
23
+ if (ua.includes("bun")) return "bun";
24
+ if (ua.includes("pnpm")) return "pnpm";
25
+ if (ua.includes("yarn")) return "yarn";
26
+ return "npm";
27
+ }
28
+
29
+ function isValidProjectName(name) {
30
+ return /^[a-z0-9@][a-z0-9._-]*$/i.test(name);
31
+ }
32
+
33
+ function resolveTargetDir(name) {
34
+ const cwd = process.cwd();
35
+ const dir = join(cwd, name);
36
+ if (existsSync(dir)) {
37
+ console.error(`Error: Directory "${name}" already exists.`);
38
+ process.exit(1);
39
+ }
40
+ return dir;
41
+ }
42
+
43
+ async function main() {
44
+ const args = process.argv.slice(2);
45
+ let projectName = args.find((a) => !a.startsWith("--"));
46
+
47
+ if (args.includes("--help") || args.includes("-h")) {
48
+ console.log(`create-nexgen v${version}`);
49
+ console.log();
50
+ console.log("Usage:");
51
+ console.log(" npm create nexgen@latest <project-name>");
52
+ console.log(" pnpm create nexgen@latest <project-name>");
53
+ console.log(" bun create nexgen@latest <project-name>");
54
+ console.log(" npx nexgen@latest <project-name>");
55
+ process.exit(0);
56
+ }
57
+
58
+ if (!projectName) {
59
+ projectName = await ask("Project name: ");
60
+ }
61
+
62
+ if (!projectName || !isValidProjectName(projectName)) {
63
+ console.error("Error: Invalid project name. Use alphanumeric, dashes, or underscores.");
64
+ process.exit(1);
65
+ }
66
+
67
+ const targetDir = resolveTargetDir(projectName);
68
+
69
+ console.log(`\nCreating project "${projectName}"...\n`);
70
+
71
+ if (!existsSync(TEMPLATE_DIR)) {
72
+ console.error("Error: Template not found. Reinstall create-nexgen.");
73
+ process.exit(1);
74
+ }
75
+
76
+ mkdirSync(targetDir, { recursive: true });
77
+ for (const entry of readdirSync(TEMPLATE_DIR)) {
78
+ if (entry === "node_modules") continue;
79
+ cpSync(join(TEMPLATE_DIR, entry), join(targetDir, entry), { recursive: true });
80
+ }
81
+
82
+ const gitignoreStub = join(targetDir, "gitignore-stub");
83
+ if (existsSync(gitignoreStub)) {
84
+ renameSync(gitignoreStub, join(targetDir, ".gitignore"));
85
+ }
86
+
87
+ const targetPkgPath = join(targetDir, "package.json");
88
+ if (existsSync(targetPkgPath)) {
89
+ const targetPkg = JSON.parse(readFileSync(targetPkgPath, "utf-8"));
90
+ targetPkg.name = projectName;
91
+ writeFileSync(targetPkgPath, JSON.stringify(targetPkg, null, 2) + "\n");
92
+ }
93
+
94
+ const pm = detectPackageManager();
95
+
96
+ console.log(`Done! Created "${projectName}" at ${targetDir}`);
97
+ console.log();
98
+ console.log(" cd " + projectName);
99
+ console.log(" " + pm + " install");
100
+ console.log(" cp .env.example .env");
101
+ console.log();
102
+ console.log("Enjoy building with Nexgen!");
103
+ }
104
+
105
+ main().catch((err) => {
106
+ console.error(err);
107
+ process.exit(1);
108
+ });
@@ -0,0 +1,14 @@
1
+ node_modules
2
+ dist
3
+ .git
4
+ .gitignore
5
+
6
+ npm-debug.log*
7
+ yarn-debug.log*
8
+ yarn-error.log*
9
+ pnpm-debug.log*
10
+
11
+ coverage
12
+ *.log
13
+ tmp
14
+ temp
package/template/.env ADDED
@@ -0,0 +1,58 @@
1
+ # ── App ────────────────────────────────────────────
2
+ APP_NAME=nexgen
3
+ APP_ENV=development
4
+ APP_PORT=3000
5
+ APP_URL=http://localhost:3000
6
+ OPEN_API=true
7
+ LOG_LEVEL=info
8
+ # Frontend origin (only needed when frontend is on a different domain than API)
9
+ # Leave empty if frontend is served from the same APP_URL or FRONTEND=false
10
+ FRONTEND_URL=
11
+ # Allowed CORS origins. Use * for any, or comma-separated for specific origins
12
+ CORS_ORIGIN=*
13
+
14
+ # ── Database ───────────────────────────────────────
15
+ # Supported: mysql://, postgres://, sqlite: prefix
16
+ DATABASE_URL=mysql://root:@localhost:3306/nexgen
17
+
18
+ # ── Storage (File Uploads) ─────────────────────────
19
+ STORAGE_DRIVER=local
20
+ STORAGE_DISK=public
21
+ STORAGE_BUCKET=
22
+ STORAGE_REGION=us-east-1
23
+ STORAGE_ENDPOINT=
24
+ STORAGE_ACCESS_KEY_ID=
25
+ STORAGE_SECRET_ACCESS_KEY=
26
+ STORAGE_FORCE_PATH_STYLE=false
27
+ STORAGE_SIGNED_URL_TTL_SECONDS=900
28
+
29
+ # ── JWT Auth ───────────────────────────────────────
30
+ JWT_ACCESS_SECRET=change-me-access
31
+ JWT_REFRESH_SECRET=change-me-refresh
32
+ JWT_ACCESS_EXPIRY=900
33
+ JWT_REFRESH_EXPIRY=2592000
34
+ JWT_REFRESH_REMEMBER_EXPIRY=604800
35
+
36
+ # ── Session / Cookie ───────────────────────────────
37
+ COOKIE_NAME=nexgen
38
+ COOKIE_SECRET=change-me-cookie
39
+
40
+ # ── Redis ──────────────────────────────────────────
41
+ # Enables/disables cache, session, queue, events, BullBoard (all Redis-backed services)
42
+ REDIS=true
43
+ REDIS_URL=redis://127.0.0.1:6379
44
+ REDIS_PREFIX=nexgen
45
+ # Comma-separated emails allowed to open /bullmq (empty = no email restriction)
46
+ BULLMQ_UI_ALLOWED_EMAILS=
47
+
48
+ # ── Auth ───────────────────────────────────────────
49
+ AUTH_REQUIRE_EMAIL_VERIFICATION=false
50
+
51
+ # ── Mail ───────────────────────────────────────────
52
+ # When true, mail errors won't crash the request. Useful in dev without SMTP
53
+ MAIL_FAIL_SILENT=true
54
+ MAIL_HOST=127.0.0.1
55
+ MAIL_PORT=1089
56
+ MAIL_USERNAME=
57
+ MAIL_PASSWORD=
58
+ MAIL_FROM_ADDRESS=no-reply@example.com
@@ -0,0 +1,59 @@
1
+ # ── App ────────────────────────────────────────────
2
+ APP_NAME=nexgen
3
+ APP_ENV=development
4
+ APP_PORT=3000
5
+ APP_URL=http://localhost:3000
6
+ OPEN_API=true
7
+ LOG_LEVEL=info
8
+ # Frontend origin when frontend is on a different domain than the API.
9
+ # Controls cross-site session cookies (SameSite=None; Secure) and Socket.IO CORS.
10
+ # Leave empty if frontend is served from the same APP_URL or there is no separate frontend.
11
+ FRONTEND_URL=
12
+ # Allowed CORS origins. Use * for any, or comma-separated for specific origins
13
+ CORS_ORIGIN=*
14
+
15
+ # ── Database ───────────────────────────────────────
16
+ # Supported: mysql://, postgres://, sqlite: prefix
17
+ DATABASE_URL=mysql://root:change-me-root@localhost:4000/nexgen
18
+
19
+ # ── Storage (File Uploads) ─────────────────────────
20
+ STORAGE_DRIVER=local
21
+ STORAGE_DISK=public
22
+ STORAGE_BUCKET=
23
+ STORAGE_REGION=us-east-1
24
+ STORAGE_ENDPOINT=
25
+ STORAGE_ACCESS_KEY_ID=
26
+ STORAGE_SECRET_ACCESS_KEY=
27
+ STORAGE_FORCE_PATH_STYLE=false
28
+ STORAGE_SIGNED_URL_TTL_SECONDS=900
29
+
30
+ # ── JWT Auth ───────────────────────────────────────
31
+ JWT_ACCESS_SECRET=change-me-access
32
+ JWT_REFRESH_SECRET=change-me-refresh
33
+ JWT_ACCESS_EXPIRY=900
34
+ JWT_REFRESH_EXPIRY=2592000
35
+ JWT_REFRESH_REMEMBER_EXPIRY=604800
36
+
37
+ # ── Session / Cookie ───────────────────────────────
38
+ COOKIE_NAME=nexgen
39
+ COOKIE_SECRET=change-me-cookie
40
+
41
+ # ── Redis ──────────────────────────────────────────
42
+ # Enables/disables cache, session, queue, events, BullBoard (all Redis-backed services)
43
+ REDIS=true
44
+ REDIS_URL=redis://127.0.0.1:6379
45
+ REDIS_PREFIX=nexgen
46
+ # Comma-separated emails allowed to open /bullmq (empty = no email restriction)
47
+ BULLMQ_UI_ALLOWED_EMAILS=
48
+
49
+ # ── Auth ───────────────────────────────────────────
50
+ AUTH_REQUIRE_EMAIL_VERIFICATION=false
51
+
52
+ # ── Mail ───────────────────────────────────────────
53
+ # When true, mail errors won't crash the request. Useful in dev without SMTP
54
+ MAIL_FAIL_SILENT=false
55
+ MAIL_HOST=127.0.0.1
56
+ MAIL_PORT=1089
57
+ MAIL_USERNAME=
58
+ MAIL_PASSWORD=
59
+ MAIL_FROM_ADDRESS=no-reply@example.com
@@ -0,0 +1,5 @@
1
+ node_modules
2
+ dist
3
+ src/resources/dist
4
+ coverage
5
+ package-lock.json
@@ -0,0 +1,8 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": false,
4
+ "trailingComma": "none",
5
+ "printWidth": 100,
6
+ "tabWidth": 2,
7
+ "bracketSameLine": true
8
+ }