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.
- package/package.json +26 -0
- package/src/index.js +108 -0
- package/template/.dockerignore +14 -0
- package/template/.env +58 -0
- package/template/.env.example +59 -0
- package/template/.prettierignore +5 -0
- package/template/.prettierrc +8 -0
- package/template/README.md +447 -0
- package/template/drizzle.config.ts +29 -0
- package/template/eslint.config.js +52 -0
- package/template/gitignore-stub +24 -0
- package/template/package.json +96 -0
- package/template/public/assets/AuthLayout-CbswhpjJ.js +1 -0
- package/template/public/assets/Button-_7aQ7gHL.js +1 -0
- package/template/public/assets/Input-CLNJXmKc.css +1 -0
- package/template/public/assets/Input-z8GI8Aqo.js +1 -0
- package/template/public/assets/InputPasswordToggle-BxlzVGp3.js +1 -0
- package/template/public/assets/InputPasswordToggle-C77FI9Eg.css +1 -0
- package/template/public/assets/Layout-DotR1sQC.js +1 -0
- package/template/public/assets/Refresh-BdqsPPBC.js +1 -0
- package/template/public/assets/admin-ui-CU34rLdN.js +1 -0
- package/template/public/assets/bootstrap-icons-BeopsB42.woff +0 -0
- package/template/public/assets/bootstrap-icons-mSm7cUeB.woff2 +0 -0
- package/template/public/assets/dashboard-CwybEyLc.js +1 -0
- package/template/public/assets/dashboard-Dc4d-Pi7.css +1 -0
- package/template/public/assets/forgetPassword-CKEJaXsq.js +1 -0
- package/template/public/assets/index-Bleyx5dm.js +64 -0
- package/template/public/assets/index-DUw8E6Yg.css +1 -0
- package/template/public/assets/login-DC7PTlQF.js +1 -0
- package/template/public/assets/realtime-test-BPQdrFym.css +1 -0
- package/template/public/assets/realtime-test-tQZ0rBEJ.js +1 -0
- package/template/public/assets/register-3O7Qs28C.js +1 -0
- package/template/public/assets/resetPassword-A5AzMWKs.js +1 -0
- package/template/public/assets/verifyEmail-DDBEQHOv.js +1 -0
- package/template/public/index.html +17 -0
- package/template/src/database/migrations/mysql/0000_init.sql +73 -0
- package/template/src/database/migrations/mysql/meta/0000_snapshot.json +484 -0
- package/template/src/database/migrations/mysql/meta/_journal.json +13 -0
- package/template/src/database/schema.ts +4 -0
- package/template/src/env.ts +107 -0
- package/template/src/framework/cache/cache.ts +81 -0
- package/template/src/framework/database/connection.ts +168 -0
- package/template/src/framework/database/optional-db-drivers.d.ts +9 -0
- package/template/src/framework/database/paginate.ts +200 -0
- package/template/src/framework/database/schema.ts +26 -0
- package/template/src/framework/database/seed.ts +33 -0
- package/template/src/framework/events/dispatcher.ts +57 -0
- package/template/src/framework/facade.ts +27 -0
- package/template/src/framework/http/app.ts +61 -0
- package/template/src/framework/http/cors.ts +19 -0
- package/template/src/framework/http/logger.ts +85 -0
- package/template/src/framework/http/openapi.ts +34 -0
- package/template/src/framework/http/ratelimiter.ts +13 -0
- package/template/src/framework/http/router.ts +76 -0
- package/template/src/framework/http/static.ts +33 -0
- package/template/src/framework/http/validation.ts +24 -0
- package/template/src/framework/kernel.ts +40 -0
- package/template/src/framework/maker-cli/src/index.mjs +51 -0
- package/template/src/framework/maker-cli/src/levels/level-1/env-db.mjs +57 -0
- package/template/src/framework/maker-cli/src/levels/level-1/file-ops.mjs +30 -0
- package/template/src/framework/maker-cli/src/levels/level-1/flags.mjs +16 -0
- package/template/src/framework/maker-cli/src/levels/level-1/help.mjs +24 -0
- package/template/src/framework/maker-cli/src/levels/level-1/naming.mjs +13 -0
- package/template/src/framework/maker-cli/src/levels/level-1/process.mjs +47 -0
- package/template/src/framework/maker-cli/src/levels/level-2/db/core.mjs +299 -0
- package/template/src/framework/maker-cli/src/levels/level-2/db/index.mjs +177 -0
- package/template/src/framework/maker-cli/src/levels/level-2/deploy/core.mjs +635 -0
- package/template/src/framework/maker-cli/src/levels/level-2/deploy/index.mjs +145 -0
- package/template/src/framework/maker-cli/src/levels/level-2/module/core.mjs +707 -0
- package/template/src/framework/maker-cli/src/levels/level-2/module/index.mjs +116 -0
- package/template/src/framework/maker-cli/src/levels/level-2/runtime/build-frontend.mjs +16 -0
- package/template/src/framework/maker-cli/src/levels/level-2/runtime/core.mjs +311 -0
- package/template/src/framework/maker-cli/src/levels/level-2/runtime/index.mjs +71 -0
- package/template/src/framework/maker-cli/stubs/controller/openapi.ts.stub +55 -0
- package/template/src/framework/maker-cli/stubs/controller/openapi.with-model.ts.stub +56 -0
- package/template/src/framework/maker-cli/stubs/controller/plain.ts.stub +57 -0
- package/template/src/framework/maker-cli/stubs/controller/schema.plain.ts.stub +13 -0
- package/template/src/framework/maker-cli/stubs/controller/schema.ts.stub +32 -0
- package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.bun.stub +49 -0
- package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.pnpm.stub +53 -0
- package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.stub +49 -0
- package/template/src/framework/maker-cli/stubs/deploy/Dockerfile.yarn.stub +53 -0
- package/template/src/framework/maker-cli/stubs/deploy/README.stub +55 -0
- package/template/src/framework/maker-cli/stubs/deploy/compose/mysql.server.stub +29 -0
- package/template/src/framework/maker-cli/stubs/deploy/compose/postgres.server.stub +29 -0
- package/template/src/framework/maker-cli/stubs/deploy/compose/sqlite.stub +29 -0
- package/template/src/framework/maker-cli/stubs/deploy/env/mysql.server.stub +73 -0
- package/template/src/framework/maker-cli/stubs/deploy/env/postgres.server.stub +73 -0
- package/template/src/framework/maker-cli/stubs/deploy/env/sqlite.stub +72 -0
- package/template/src/framework/maker-cli/stubs/deploy/scripts/auto-migrate.sh.stub +15 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/README.stub +77 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/compose/noredis.stub +118 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/compose/redis.dev.stub +131 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/compose/redis.stub +129 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/env/local.example.stub +10 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/env/noredis.stub +24 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/env/redis.stub +24 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/README.stub +15 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/nginx-vhost/app.example.com.stub +12 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/pgadmin/servers.stub +13 -0
- package/template/src/framework/maker-cli/stubs/deploy/server/redis/redis.conf.stub +6 -0
- package/template/src/framework/maker-cli/stubs/deploy/supervisor/noredis.stub +53 -0
- package/template/src/framework/maker-cli/stubs/deploy/supervisor/redis.stub +69 -0
- package/template/src/framework/maker-cli/stubs/deploy/workflow/local.json.stub +24 -0
- package/template/src/framework/maker-cli/stubs/deploy/workflow/remote.json.stub +20 -0
- package/template/src/framework/maker-cli/stubs/example/console.ts.stub +33 -0
- package/template/src/framework/maker-cli/stubs/example/controller.ts.stub +503 -0
- package/template/src/framework/maker-cli/stubs/example/job.ts.stub +74 -0
- package/template/src/framework/maker-cli/stubs/example/route.api.ts.stub +206 -0
- package/template/src/framework/maker-cli/stubs/example/schema.ts.stub +41 -0
- package/template/src/framework/maker-cli/stubs/job/name.ts.stub +24 -0
- package/template/src/framework/maker-cli/stubs/model/name.mysql.ts.stub +8 -0
- package/template/src/framework/maker-cli/stubs/model/name.postgresql.ts.stub +8 -0
- package/template/src/framework/maker-cli/stubs/model/name.sqlite.ts.stub +8 -0
- package/template/src/framework/maker-cli/stubs/notification/NotificationBell.vue.stub +218 -0
- package/template/src/framework/maker-cli/stubs/notification/controller.ts.stub +85 -0
- package/template/src/framework/maker-cli/stubs/notification/index.vue.stub +211 -0
- package/template/src/framework/maker-cli/stubs/notification/job.ts.stub +12 -0
- package/template/src/framework/maker-cli/stubs/notification/route.api.ts.stub +49 -0
- package/template/src/framework/maker-cli/stubs/notification/schema.ts.stub +25 -0
- package/template/src/framework/maker-cli/stubs/route/api.ts.stub +79 -0
- package/template/src/framework/maker-cli/stubs/route/plain.ts.stub +10 -0
- package/template/src/framework/maker-cli/stubs/schedule/name.ts.stub +35 -0
- package/template/src/framework/maker-cli/stubs/seeder/name.ts.stub +17 -0
- package/template/src/framework/modules/discover.ts +54 -0
- package/template/src/framework/modules/routes.ts +26 -0
- package/template/src/framework/notification/index.ts +109 -0
- package/template/src/framework/queue/clear.ts +20 -0
- package/template/src/framework/queue/queue.ts +213 -0
- package/template/src/framework/queue/ui.ts +104 -0
- package/template/src/framework/queue/worker.ts +33 -0
- package/template/src/framework/realtime/broadcast.ts +27 -0
- package/template/src/framework/realtime/index.ts +1 -0
- package/template/src/framework/realtime/socket-cookie.ts +65 -0
- package/template/src/framework/realtime/socket.ts +132 -0
- package/template/src/framework/realtime/types.ts +6 -0
- package/template/src/framework/realtime/ui.ts +16 -0
- package/template/src/framework/redis/client.ts +126 -0
- package/template/src/framework/scheduler/lock.ts +124 -0
- package/template/src/framework/scheduler/run.ts +26 -0
- package/template/src/framework/scheduler/scheduler.ts +82 -0
- package/template/src/framework/server.ts +147 -0
- package/template/src/framework/session/session.ts +116 -0
- package/template/src/framework/storage/storage.ts +743 -0
- package/template/src/framework/support/cookie.ts +78 -0
- package/template/src/framework/support/jwt.ts +45 -0
- package/template/src/framework/support/lifecycle.ts +35 -0
- package/template/src/framework/support/logger.ts +102 -0
- package/template/src/framework/support/mail.ts +43 -0
- package/template/src/framework/support/password.ts +23 -0
- package/template/src/framework/support/url.ts +25 -0
- package/template/src/middlewares/auth-middleware.ts +98 -0
- package/template/src/middlewares/role-middleware.ts +24 -0
- package/template/src/modules/auth/controllers/auth.controller.ts +445 -0
- package/template/src/modules/auth/controllers/auth.helpers.ts +110 -0
- package/template/src/modules/auth/controllers/auth.schema.ts +102 -0
- package/template/src/modules/auth/controllers/role.controller.ts +25 -0
- package/template/src/modules/auth/database/models/notifications.ts +22 -0
- package/template/src/modules/auth/database/models/role.ts +14 -0
- package/template/src/modules/auth/database/models/user.ts +46 -0
- package/template/src/modules/auth/database/seeders/role.ts +19 -0
- package/template/src/modules/auth/database/seeders/user.ts +33 -0
- package/template/src/modules/auth/jobs/forgetpass.ts +18 -0
- package/template/src/modules/auth/jobs/registeruser.ts +31 -0
- package/template/src/modules/auth/jobs/verifyemail.ts +18 -0
- package/template/src/modules/auth/routes/api.ts +151 -0
- package/template/src/modules/auth/routes/role.ts +39 -0
- package/template/src/modules/welcome/controllers/welcome.controller.ts +14 -0
- package/template/src/modules/welcome/controllers/welcome.schema.ts +6 -0
- package/template/src/modules/welcome/database/models/welcome.ts +6 -0
- package/template/src/modules/welcome/routes/api.ts +20 -0
- package/template/src/resources/index.html +16 -0
- package/template/src/resources/src/App.vue +5 -0
- package/template/src/resources/src/assets/css/styles.css +14934 -0
- package/template/src/resources/src/assets/css/styles.css.map +1 -0
- package/template/src/resources/src/assets/images/favicon/favicon.ico +0 -0
- package/template/src/resources/src/assets/images/favicon/favicon1.ico +0 -0
- package/template/src/resources/src/assets/images/logo-1.png +0 -0
- package/template/src/resources/src/assets/images/logo-dark-sm.png +0 -0
- package/template/src/resources/src/assets/images/logo-dark.png +0 -0
- package/template/src/resources/src/assets/images/logo-dark1.png +0 -0
- package/template/src/resources/src/assets/images/logo-sm.png +0 -0
- package/template/src/resources/src/assets/images/logo1.png +0 -0
- package/template/src/resources/src/assets/images/logo2.png +0 -0
- package/template/src/resources/src/assets/scss/custom.css +217 -0
- package/template/src/resources/src/assets/scss/custom.css.map +1 -0
- package/template/src/resources/src/assets/scss/custom.scss +1100 -0
- package/template/src/resources/src/components/Button.vue +35 -0
- package/template/src/resources/src/components/Checkbox.vue +29 -0
- package/template/src/resources/src/components/FloatButton.vue +36 -0
- package/template/src/resources/src/components/Href.vue +32 -0
- package/template/src/resources/src/components/Input.vue +227 -0
- package/template/src/resources/src/components/InputGroup.vue +153 -0
- package/template/src/resources/src/components/InputPasswordToggle.vue +226 -0
- package/template/src/resources/src/components/Modal.vue +102 -0
- package/template/src/resources/src/components/Pagebar.vue +28 -0
- package/template/src/resources/src/components/Refresh.vue +26 -0
- package/template/src/resources/src/components/Select.vue +390 -0
- package/template/src/resources/src/components/Spinner.vue +42 -0
- package/template/src/resources/src/components/Switch.vue +65 -0
- package/template/src/resources/src/components/TextArea.vue +121 -0
- package/template/src/resources/src/components/Toast.vue +56 -0
- package/template/src/resources/src/components/datatable/DataTableSkeleton.vue +99 -0
- package/template/src/resources/src/components/datatable/Pagination.vue +161 -0
- package/template/src/resources/src/components/datatable/SelectOpption.vue +54 -0
- package/template/src/resources/src/components/datatable/index.vue +237 -0
- package/template/src/resources/src/composables/useAuth.ts +52 -0
- package/template/src/resources/src/composables/useBrowserDetect.ts +5 -0
- package/template/src/resources/src/composables/useDialog.ts +5 -0
- package/template/src/resources/src/composables/useGum.ts +3 -0
- package/template/src/resources/src/composables/usePulse.ts +5 -0
- package/template/src/resources/src/env.d.ts +20 -0
- package/template/src/resources/src/helpers/nformatter.ts +10 -0
- package/template/src/resources/src/helpers/utils.ts +68 -0
- package/template/src/resources/src/layouts/AuthLayout.vue +20 -0
- package/template/src/resources/src/layouts/Layout/Footer.vue +23 -0
- package/template/src/resources/src/layouts/Layout/Header.vue +90 -0
- package/template/src/resources/src/layouts/Layout/Sidebar.vue +137 -0
- package/template/src/resources/src/layouts/Layout/index.vue +76 -0
- package/template/src/resources/src/main.ts +27 -0
- package/template/src/resources/src/pages/auth/forgetPassword.vue +76 -0
- package/template/src/resources/src/pages/auth/login.vue +93 -0
- package/template/src/resources/src/pages/auth/register.vue +130 -0
- package/template/src/resources/src/pages/auth/resetPassword.vue +119 -0
- package/template/src/resources/src/pages/auth/verifyEmail.vue +60 -0
- package/template/src/resources/src/pages/dashboard/index.vue +76 -0
- package/template/src/resources/src/plugins/axios.ts +33 -0
- package/template/src/resources/src/plugins/browserDetect.ts +55 -0
- package/template/src/resources/src/plugins/dialog.ts +167 -0
- package/template/src/resources/src/plugins/gum.ts +343 -0
- package/template/src/resources/src/plugins/pulse.ts +141 -0
- package/template/src/resources/src/plugins/routeProgress.ts +87 -0
- package/template/src/resources/src/router/index.ts +85 -0
- package/template/src/resources/src/stores/admin-ui.ts +148 -0
- package/template/src/resources/src/stores/auth.ts +151 -0
- package/template/src/resources/tsconfig.json +19 -0
- package/template/src/resources/vite.config.ts +43 -0
- package/template/src/storage/logs/app.log +20179 -0
- package/template/src/storage/logs/fatal.log +727 -0
- 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
|
+
});
|
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
|