create-authenik8-app 2.0.4 → 2.0.6

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/README.md CHANGED
@@ -13,6 +13,7 @@
13
13
  <p align="center">
14
14
  <img src="./assets/giffy-ezgif.com-video-to-gif-converter.gif" width="600" />
15
15
  </p>
16
+
16
17
  ---
17
18
 
18
19
  ## Usage
package/dist/bin/index.js CHANGED
@@ -7,6 +7,85 @@ import { ExitPromptError } from "@inquirer/core";
7
7
  import ora from "ora";
8
8
  import { execSync } from "child_process";
9
9
  import { fileURLToPath } from "url";
10
+ import { spawnSync } from "child_process";
11
+ import os from "os";
12
+ function step(name, fn) {
13
+ return { name, fn };
14
+ }
15
+ let state = {};
16
+ let answers = {};
17
+ const stateFile = (project) => path.join(process.cwd(), project, ".authenik8-state.json");
18
+ function saveState(project, state) {
19
+ fs.ensureDirSync(path.join(process.cwd(), project));
20
+ fs.writeJsonSync(stateFile(project), state, { spaces: 2 });
21
+ }
22
+ function loadState(project) {
23
+ const file = stateFile(project);
24
+ if (!fs.existsSync(file))
25
+ return null;
26
+ return fs.readJsonSync(file);
27
+ }
28
+ function clearState(project) {
29
+ const file = stateFile(project);
30
+ if (fs.existsSync(file))
31
+ fs.removeSync(file);
32
+ }
33
+ const isResume = process.argv.includes("--resume");
34
+ const platform = os.platform();
35
+ // 'linux' | 'darwin' | 'win32'
36
+ const isTermux = process.env.PREFIX?.includes("com.termux") ||
37
+ process.env.TERMUX === "true";
38
+ function getBestHashLib() {
39
+ if (isTermux)
40
+ return "bcryptjs"; // argon2 breaks here
41
+ if (platform === "win32")
42
+ return "bcryptjs";
43
+ // avoids build tools issues for most users
44
+ if (platform === "darwin")
45
+ return "argon2";
46
+ // mac usually fine
47
+ if (platform === "linux")
48
+ return "argon2";
49
+ // but still fallback later if needed
50
+ return "bcryptjs";
51
+ }
52
+ function createSaver(projectName, ctx) {
53
+ return (step, extra) => {
54
+ saveState(projectName, {
55
+ step,
56
+ projectName,
57
+ ...ctx.state,
58
+ ...ctx.answers,
59
+ ...extra,
60
+ });
61
+ };
62
+ }
63
+ function generateHashModule(hashLib) {
64
+ if (hashLib === "argon2") {
65
+ return `
66
+ import argon2 from "argon2";
67
+
68
+ export const hashPassword = (password: string) => {
69
+ return argon2.hash(password);
70
+ };
71
+
72
+ export const comparePassword = (password: string, hash: string) => {
73
+ return argon2.verify(hash, password);
74
+ };
75
+ `;
76
+ }
77
+ return `
78
+ import bcrypt from "bcryptjs";
79
+
80
+ export const hashPassword = (password: string) => {
81
+ return bcrypt.hash(password, 10);
82
+ };
83
+
84
+ export const comparePassword = (password: string, hash: string) => {
85
+ return bcrypt.compare(password, hash);
86
+ };
87
+ `;
88
+ }
10
89
  const __filename = fileURLToPath(import.meta.url);
11
90
  const __dirname = path.dirname(__filename);
12
91
  const projectName = process.argv[2];
@@ -17,69 +96,96 @@ if (!projectName) {
17
96
  const isProduction = process.argv.includes("--production-ready");
18
97
  const targetDir = path.join(process.cwd(), projectName);
19
98
  let projectCreated = false;
99
+ const exists = fs.existsSync(targetDir);
100
+ if (isResume) {
101
+ }
102
+ if (exists && !isResume) {
103
+ const { action } = await inquirer.prompt([
104
+ {
105
+ type: "select",
106
+ name: "action",
107
+ message: `Folder "${projectName}" already exists. What do you want to do?`,
108
+ choices: [
109
+ { name: "Resume setup", value: "resume" },
110
+ { name: "Overwrite", value: "overwrite" },
111
+ { name: "Cancel", value: "cancel" },
112
+ ],
113
+ },
114
+ ]);
115
+ if (action === "resume") {
116
+ // trigger resume logic
117
+ }
118
+ if (action === "overwrite") {
119
+ await fs.remove(targetDir);
120
+ }
121
+ if (action === "cancel") {
122
+ process.exit(0);
123
+ }
124
+ }
20
125
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
21
126
  const cleanLogo = `
22
127
 
23
- █████╗ █████╗
128
+ █████╗ █████╗
24
129
  ██╔══██╗ ██╔══██╗
25
130
  ███████║ ╚█████╔╝
26
131
  ██╔══██║ ██╔══██╗
27
132
  ██║ ██║ ╚█████╔╝
28
133
  ╚═╝ ╚═╝ ╚════╝
29
134
 
30
- A8
135
+ A8
136
+
31
137
  Authenik8 CLI
32
- Build Faster
33
- More , Secure
138
+ Build Faster
139
+ More , Secure
34
140
  `;
35
141
  const glitchFrames = [
36
- `
37
- █████╗ █████╗
38
- ██╔══██╗ ██▒▒▒▒██
39
- ███████║ ╚█████╔╝
40
- ██╔══██║ ██▒▒▒▒██
41
- ██║ ██║ ╚█████╔╝
42
- ╚═╝ ╚═╝ ╚════╝
142
+ `
143
+ █████╗ █████╗
144
+ ██╔══██╗ ██▒▒▒▒██
145
+ ███████║ ╚█████╔╝
146
+ ██╔══██║ ██▒▒▒▒██
147
+ ██║ ██║ ╚█████╔╝
148
+ ╚═╝ ╚═╝ ╚════╝
43
149
 
44
- A8
45
- Authenik8 CLI
150
+ A8
151
+ Authenik8 CLI
46
152
 
47
- More
153
+ More
48
154
  `,
49
155
  `
50
- ██▓▓██╗ ██▓▓██╗
51
- ██▒▒██╔╝ ██▒▒██╔╝
52
- ██▒▒▒▒██ ╚█████╔╝
53
- ██▓▓██╔╝ ██▒▒██╗
54
- ██▒▒██║ ╚█████╔╝
55
- ╚═════╝ ╚════╝
56
-
57
- A8
58
- Authenik8 CLI
59
- Faster
156
+ ██▓▓██╗ ██▓▓██╗
157
+ ██▒▒██╔╝ ██▒▒██╔╝
158
+ ██▒▒▒▒██ ╚█████╔╝
159
+ ██▓▓██╔╝ ██▒▒██╗
160
+ ██▒▒██║ ╚█████╔╝
161
+ ╚═════╝ ╚════╝
162
+
163
+ A8
164
+ Authenik8 CLI
165
+ Faster
60
166
  `,
61
167
  `
62
- ██▒▒██╗ ██▒▒██╗
63
- ██▓▓██╔╝ ██▓▓██╔╝
64
- ██▒▒▒▒██ ╚█████╔╝
65
- ██▓▓██╔╝ ██▓▓██╗
66
- ██▒▒██║ ╚█████╔╝
67
- ╚═════╝ ╚════╝
68
-
69
- A8
70
- Authenik8 CLI
71
- Build
168
+ ██▒▒██╗ ██▒▒██╗
169
+ ██▓▓██╔╝ ██▓▓██╔╝
170
+ ██▒▒▒▒██ ╚█████╔╝
171
+ ██▓▓██╔╝ ██▓▓██╗
172
+ ██▒▒██║ ╚█████╔╝
173
+ ╚═════╝ ╚════╝
174
+
175
+ A8
176
+ Authenik8 CLI
177
+ Build
72
178
  `,
73
179
  `
74
- ██▓▓██╗ ██▓▓██╗
75
- ██▒▒██╔╝ ██▒▒██╔╝
76
- ██▒▒▒▒██ ╚█████╔╝
77
- ██▓▓██╔╝ ██▒▒██╗
78
- ██▒▒██║ ╚█████╔╝
79
- ╚═════╝ ╚════╝
180
+ ██▓▓██╗ ██▓▓██╗
181
+ ██▒▒██╔╝ ██▒▒██╔╝
182
+ ██▒▒▒▒██ ╚█████╔╝
183
+ ██▓▓██╔╝ ██▒▒██╗
184
+ ██▒▒██║ ╚█████╔╝
185
+ ╚═════╝ ╚════╝
80
186
 
81
- A8
82
- Authenik8 CLI
187
+ A8
188
+ Authenik8 CLI
83
189
 
84
190
  `
85
191
  ];
@@ -112,277 +218,339 @@ async function showBootLogo() {
112
218
  await sleep(800);
113
219
  boot.succeed("Engine ready");
114
220
  }
221
+ //const isResume = process.argv.includes("--resume");
115
222
  async function main() {
116
- await showBootLogo();
117
- if (process.argv.includes("--help")) {
118
- console.log(`
223
+ try {
224
+ await showBootLogo();
225
+ if (process.argv.includes("--help")) {
226
+ console.log(`
119
227
  Authenik8 CLI
120
228
 
121
229
  Usage:
122
- create-authenik8-app <project-name>
230
+ create-authenik8-app <project-name>
123
231
 
124
232
  Options:
125
- --help Show this help message
126
- --production-ready production mode
233
+ --resume Resume project setup(in development)
234
+ --help Show this help message
235
+ --production-ready production mode
127
236
  Features:
128
- - Express backend (default)
129
- - Optional Prisma ORM
130
- - PostgreSQL (production)
131
- - SQLite (quick start)
132
- - Optional Git initialization
133
- - Optional OAuth
237
+
238
+ Express backend (default)
239
+
240
+ Optional Prisma ORM
241
+
242
+ PostgreSQL (production)
243
+
244
+ SQLite (quick start)
245
+
246
+ Optional Git initialization
247
+
248
+ Optional OAuth
249
+
134
250
 
135
251
  Examples:
136
- create-authenik8-app my-app
252
+ create-authenik8-app my-app
137
253
  `);
138
- process.exit(0);
139
- }
140
- console.log(chalk.gray(`
254
+ process.exit(0);
255
+ }
256
+ console.log(chalk.gray(`
141
257
  Available options:
142
- Authentication setup:
143
- • base (JWT only)
144
- • auth (JWT + Password/Email auth)
145
- • auth-oauth(JWT+ Password/Email + oauth)
146
-
147
- Frameworks:
148
- • Express
149
- • Fastify(coming soon)
150
-
151
- Database (if Prisma enabled):
152
- • PostgreSQL
153
- • SQLite (quick start)
154
-
155
- Features:
156
- • Prisma ORM (optional)
157
- • Git initialization (optional)
158
- • OAuth + Auth
258
+ Authentication setup:
259
+ • base (JWT only)
260
+ • auth (JWT + Password/Email auth)
261
+ • auth-oauth(JWT+ Password/Email + oauth)
262
+
263
+ Frameworks:
264
+ • Express
265
+ • Fastify(coming soon)
266
+
267
+ Database (if Prisma enabled):
268
+ • PostgreSQL
269
+ • SQLite (quick start)
270
+
271
+ Features:
272
+ • Prisma ORM (optional)
273
+ • Git initialization (optional)
274
+ • OAuth + Auth
159
275
  `));
160
- // 🔥 PROMPTS
161
- const answers = await inquirer.prompt([
162
- {
163
- type: "list",
164
- name: "framework",
165
- message: "Choose framework:",
166
- choices: ["Express", "Fastify (coming soon)"],
167
- },
168
- {
169
- type: "confirm",
170
- name: "usePrisma",
171
- message: "Use Prisma?",
172
- default: true,
173
- },
174
- {
175
- type: "list",
176
- name: "database",
177
- message: "Choose database:",
178
- choices: [
179
- { name: "PostgreSQL", value: "postgresql(recommended for auth)" },
180
- { name: "SQLite (quick start, limited features)", value: "sqlite" }
181
- ],
182
- when: (answers) => answers.usePrisma,
183
- },
184
- {
185
- type: "confirm",
186
- name: "useGit",
187
- message: "Initialize git?",
188
- default: true,
189
- }, {
190
- type: "list",
191
- name: "authMode",
192
- message: "Choose authentication setup:",
193
- choices: [
194
- { name: "JWT only (no auth routes)", value: "base" },
195
- { name: "Email + Password Auth", value: "auth" },
196
- { name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
197
- ],
276
+ answers = await inquirer.prompt([
277
+ {
278
+ type: "list",
279
+ name: "framework",
280
+ message: "Choose framework:",
281
+ choices: ["Express", "Fastify (coming soon)"],
282
+ default: state.framework ?? "Express",
283
+ },
284
+ {
285
+ type: "confirm",
286
+ name: "usePrisma",
287
+ message: "Use Prisma?",
288
+ default: state.usePrisma ?? true,
289
+ },
290
+ {
291
+ type: "list",
292
+ name: "database",
293
+ message: "Choose database:",
294
+ choices: [
295
+ { name: "PostgreSQL", value: "postgresql" },
296
+ { name: "SQLite ", value: "sqlite" }
297
+ ],
298
+ when: (answers) => answers.usePrisma,
299
+ default: state.database ?? "sqlite",
300
+ },
301
+ {
302
+ type: "confirm",
303
+ name: "useGit",
304
+ message: "Initialize git?",
305
+ default: state.useGit ?? true,
306
+ }, {
307
+ type: "list",
308
+ name: "authMode",
309
+ message: "Choose authentication setup:",
310
+ choices: [
311
+ { name: "JWT only", value: "base" },
312
+ { name: "Email + Password Auth", value: "auth" },
313
+ { name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
314
+ ],
315
+ default: state.authMode ?? "base"
316
+ }
317
+ ]);
318
+ function assertRequired(value, name) {
319
+ if (value === undefined || value === null || value === "") {
320
+ console.log(`❌ Missing required input: ${name}`);
321
+ process.exit(1);
322
+ }
198
323
  }
199
- ]);
200
- // 🚫 Prevent overwrite
201
- if (fs.existsSync(targetDir)) {
202
- console.log(chalk.red("\n❌ Folder already exists"));
203
- process.exit(1);
204
- }
205
- console.log(chalk.cyan("\n⚙️ Setting things up...\n"));
206
- const templateRoot = path.resolve(__dirname, "../../templates");
207
- let templateName = "express-base";
208
- if (answers.authMode === "auth") {
209
- templateName = "express-auth";
210
- }
211
- if (answers.authMode === "auth-oauth") {
212
- templateName = "express-auth+";
213
- }
214
- const templatePath = path.join(templateRoot, templateName);
215
- // 📁 Create project (SPINNER)
216
- const createSpinner = ora("Creating project structure...").start();
217
- try {
218
- await fs.copy(templatePath, targetDir);
219
- projectCreated = true;
220
- createSpinner.succeed("Project files created");
221
- }
222
- catch (err) {
223
- createSpinner.fail("Failed to create project");
224
- console.error(err);
225
- process.exit(1);
226
- }
227
- if (answers.usePrisma) {
228
- const prismaSpinner = ora("Adding Prisma setup...").start();
229
- try {
230
- const dbType = answers.database ===
231
- "postgresql" ? "postgresql"
232
- : "sqlite";
233
- const prismaTemplatePath = path.join(templateRoot, `prisma/${dbType}`);
234
- // Copy prisma schema
235
- await fs.copy(path.join(prismaTemplatePath, "schema.prisma"), path.join(targetDir, "prisma/schema.prisma"));
236
- // Copy env
237
- await fs.copy(path.join(prismaTemplatePath, ".env"), path.join(targetDir, ".env"));
238
- const pkgPath = path.join(targetDir, "package.json");
239
- const pkg = await fs.readJson(pkgPath);
240
- await fs.writeJson(pkgPath, pkg, { spaces: 2 });
241
- // Inject dependencies
242
- pkg.dependencies = {
243
- ...pkg.dependencies,
244
- "@prisma/client": "5.22.0",
245
- };
246
- pkg.devDependencies = {
247
- ...pkg.devDependencies,
248
- prisma: "5.22.0",
249
- };
250
- // Add scripts
251
- pkg.scripts = {
252
- ...pkg.scripts,
253
- "prisma:generate": "prisma generate",
254
- "prisma:migrate": "prisma migrate dev",
255
- };
256
- prismaSpinner.succeed(`Prisma (${dbType}) configured`);
324
+ const finalConfig = {
325
+ ...state,
326
+ ...answers,
327
+ };
328
+ assertRequired(finalConfig.framework, "framework");
329
+ assertRequired(finalConfig.authMode, "authMode");
330
+ if (finalConfig.usePrisma && !finalConfig.database) {
331
+ finalConfig.database = "sqlite";
257
332
  }
258
- catch (err) {
259
- prismaSpinner.fail("Failed to setup Prisma");
260
- console.error(err);
333
+ if (finalConfig.usePrisma) {
334
+ assertRequired(finalConfig.database, "database");
261
335
  }
262
- const installSpinner = ora("Installing dependencies...(this may take a few minutes)").start();
336
+ if (finalConfig.usePrisma && !answers.database && !state.database) {
337
+ console.log(chalk.gray("ℹ️ Defaulting to SQLite (quick start)"));
338
+ }
339
+ if (!answers.authMode || !answers.framework) {
340
+ console.log("❌ Invalid setup state. Restart CLI.");
341
+ process.exit(1);
342
+ }
343
+ console.log(chalk.cyan("\n⚙️ Setting things up...\n"));
344
+ const templateRoot = path.resolve(__dirname, "../../templates");
345
+ let templateName = "express-base";
346
+ if (answers.authMode === "auth") {
347
+ templateName = "express-auth";
348
+ }
349
+ if (answers.authMode === "auth-oauth") {
350
+ templateName = "express-auth+";
351
+ }
352
+ const templatePath = path.join(templateRoot, templateName);
353
+ // 📁 Create project (SPINNER)
354
+ const createSpinner = ora("Creating project structure...").start();
263
355
  try {
264
- execSync("npm install", {
265
- cwd: targetDir,
266
- stdio: "ignore",
267
- });
268
- installSpinner.succeed("Dependencies installed");
356
+ await fs.copy(templatePath, targetDir);
357
+ projectCreated = true;
358
+ createSpinner.succeed("Project files created");
269
359
  }
270
360
  catch (err) {
271
- installSpinner.fail("Failed to install dependencies");
361
+ createSpinner.fail("Failed to create project");
272
362
  console.error(err);
273
363
  process.exit(1);
274
364
  }
275
- if (answers.usePrisma) {
276
- const prismaGenSpinner = ora("Generating Prisma client...").start();
365
+ let selectedHash = "bcryptjs"; // default safe fallback
366
+ if (answers.authMode !== "base") {
367
+ const authSpinner = ora("Installing password auth...").start();
368
+ selectedHash = getBestHashLib();
277
369
  try {
278
- execSync("npx prisma@5.22.0 generate", {
370
+ spawnSync("npm", ["install", selectedHash], {
279
371
  cwd: targetDir,
280
372
  stdio: "ignore"
281
373
  });
282
- prismaGenSpinner.succeed("Prisma client generated");
374
+ authSpinner.succeed(`Password auth ready ${selectedHash}`);
283
375
  }
284
376
  catch (err) {
285
- prismaGenSpinner.fail("Failed to generate Prisma client");
286
- console.error(err);
377
+ if (selectedHash !== "bcryptjs") {
378
+ authSpinner.warn(`${selectedHash} failed, falling back to bcryptjs`);
379
+ spawnSync("npm", ["install", "bcryptjs"], {
380
+ cwd: targetDir,
381
+ stdio: "ignore",
382
+ });
383
+ selectedHash = "bcryptjs";
384
+ authSpinner.succeed("Password auth ready (bcryptjs fallback)");
385
+ }
386
+ else {
387
+ authSpinner.fail("Failed to install password auth");
388
+ process.exit(1);
389
+ }
287
390
  }
288
391
  }
289
- if (isProduction) {
290
- const pm2Spinner = ora("Setting up production mode (PM2)...").start();
291
- try {
292
- execSync("npm install pm2", {
392
+ if (answers.authMode !== "base") {
393
+ const hashLib = getBestHashLib(); // or CLI decision
394
+ await fs.writeFile(path.join(targetDir, "src/utils/hash.ts"), generateHashModule(hashLib));
395
+ const deps = [];
396
+ if (hashLib === "argon2")
397
+ deps.push("argon2");
398
+ if (hashLib === "bcryptjs")
399
+ deps.push("bcryptjs");
400
+ if (deps.length) {
401
+ execSync(`npm install ${deps.join(" ")}`, {
293
402
  cwd: targetDir,
294
403
  stdio: "ignore",
295
404
  });
296
- pm2Spinner.succeed("PM2 installed (production-ready)");
405
+ }
406
+ ;
407
+ }
408
+ if (answers.usePrisma) {
409
+ const prismaSpinner = ora("Adding Prisma setup...").start();
410
+ try {
411
+ const dbType = answers.database ===
412
+ "postgresql" ? "postgresql"
413
+ : "sqlite";
414
+ const prismaTemplatePath = path.join(templateRoot, `prisma/${dbType}`);
415
+ // Copy prisma schema
416
+ await fs.copy(path.join(prismaTemplatePath, "schema.prisma"), path.join(targetDir, "prisma/schema.prisma"));
417
+ // Copy env
418
+ await fs.copy(path.join(prismaTemplatePath, ".env"), path.join(targetDir, ".env"));
419
+ const pkgPath = path.join(targetDir, "package.json");
420
+ const pkg = await fs.readJson(pkgPath);
421
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
422
+ // Inject dependencies
423
+ pkg.dependencies = {
424
+ ...pkg.dependencies,
425
+ "@prisma/client": "5.22.0",
426
+ };
427
+ pkg.devDependencies = {
428
+ ...pkg.devDependencies,
429
+ prisma: "5.22.0",
430
+ };
431
+ // Add scripts
432
+ pkg.scripts = {
433
+ ...pkg.scripts,
434
+ "prisma:generate": "prisma generate",
435
+ "prisma:migrate": "prisma migrate dev",
436
+ };
437
+ prismaSpinner.succeed(`Prisma (${dbType}) configured`);
297
438
  }
298
439
  catch (err) {
299
- pm2Spinner.fail("Failed to install PM2");
440
+ prismaSpinner.fail("Failed to setup Prisma");
441
+ console.error(err);
300
442
  }
301
- }
302
- if (answers.authMode !== "base") {
303
- const authSpinner = ora("Installing password auth...").start();
443
+ if (answers.usePrisma) {
444
+ const prismaGenSpinner = ora("Generating Prisma client...").start();
445
+ try {
446
+ execSync("npx prisma@5.22.0 generate", {
447
+ cwd: targetDir,
448
+ stdio: "ignore"
449
+ });
450
+ prismaGenSpinner.succeed("Prisma client generated");
451
+ }
452
+ catch (err) {
453
+ prismaGenSpinner.fail("Failed to generate Prisma client");
454
+ console.error(err);
455
+ }
456
+ }
457
+ const installSpinner = ora("Installing dependencies...(this may take a few minutes)").start();
304
458
  try {
305
- execSync("npm install argon2", {
459
+ execSync("npm install", {
306
460
  cwd: targetDir,
307
461
  stdio: "ignore",
308
462
  });
309
- authSpinner.succeed("Password auth ready (argon2)");
463
+ installSpinner.succeed("Dependencies installed");
310
464
  }
311
465
  catch (err) {
312
- authSpinner.fail("Failed to install password auth");
466
+ installSpinner.fail("Failed to install dependencies");
313
467
  console.error(err);
314
468
  process.exit(1);
315
469
  }
470
+ if (isProduction) {
471
+ const pm2Spinner = ora("Setting up production mode (PM2)...").start();
472
+ try {
473
+ execSync("npm install pm2", {
474
+ cwd: targetDir,
475
+ stdio: "ignore",
476
+ });
477
+ pm2Spinner.succeed("PM2 installed (production-ready)");
478
+ }
479
+ catch (err) {
480
+ pm2Spinner.fail("Failed to install PM2");
481
+ }
482
+ }
316
483
  }
317
- }
318
- if (answers.useGit) {
319
- const gitSpinner = ora("Initializing git...").start();
320
- try {
321
- execSync("git init", {
322
- cwd: targetDir,
323
- stdio: "ignore",
324
- });
325
- gitSpinner.succeed("Git initialized");
326
- }
327
- catch (err) {
328
- gitSpinner.fail("Git init failed");
484
+ if (answers.useGit) {
485
+ const gitSpinner = ora("Initializing git...").start();
486
+ try {
487
+ execSync("git init", {
488
+ cwd: targetDir,
489
+ stdio: "ignore",
490
+ });
491
+ gitSpinner.succeed("Git initialized");
492
+ }
493
+ catch (err) {
494
+ gitSpinner.fail("Git init failed");
495
+ }
329
496
  }
330
- }
331
- console.log(chalk.green.bold("\n🎉 Authenik8 app created successfully!\n"));
332
- if (isProduction) {
333
- fs.appendFileSync(path.join(targetDir, "README.md"), `
497
+ console.log(chalk.green.bold("\n🎉 Authenik8 app created successfully!\n"));
498
+ if (isProduction) {
499
+ fs.appendFileSync(path.join(targetDir, "README.md"), `
334
500
 
335
- ## 🚀 Production Mode
501
+ 🚀 Production Mode
336
502
 
337
503
  This project is configured for production using PM2.
338
504
 
339
- ### Start app in cluster mode:
505
+ Start app in cluster mode:
506
+
340
507
  npm run pm2:start
341
508
 
342
- ### View logs:
509
+ View logs:
510
+
343
511
  npm run pm2:logs
344
512
 
345
- ### Stop app:
513
+ Stop app:
514
+
346
515
  npm run pm2:stop
347
516
 
348
- `);
349
- }
350
- console.log(chalk.white(`
517
+ `);
518
+ }
519
+ console.log(chalk.white(`
351
520
  Next steps:
352
521
 
353
- cd ${projectName}
354
- redis-server --daemonize yes
355
- npm run dev
522
+ cd ${projectName}
523
+ redis-server --daemonize yes
524
+ npm run dev
356
525
 
357
- Auth Features:
358
- ${answers.authMode === "base"
359
- ? "✓ JWT only"
360
- : answers.authMode === "auth"
361
- ? "✓ Email + Password"
362
- : "✓ Password + OAuth (Google/GitHub)"}
363
-
526
+ Auth Features:
527
+ ${answers.authMode === "base"
528
+ ? "✓ JWT only"
529
+ : answers.authMode === "auth"
530
+ ? "✓ Email + Password"
531
+ : "✓ Password + OAuth (Google/GitHub)"}
364
532
 
365
533
  🛠 Stack:
366
- ✔ Express
367
- ✔ ${answers.usePrisma ? (answers.database.includes("postgresql") ? "PostgreSQL" : "SQLite") : "No database"}
368
- ✔ ${answers.usePrisma ? "Prisma ORM" : "No ORM"}
534
+ ✔ Express
535
+ ✔ ${answers.usePrisma ? (answers.database.includes("postgresql") ? "PostgreSQL" : "SQLite") : "No database"}
536
+ ✔ ${answers.usePrisma ? "Prisma ORM" : "No ORM"}
369
537
 
370
- 📡 Endpoints:
538
+ 📡 API Routes:
371
539
  ${answers.authMode === "base"
372
- ? `
540
+ ? `
373
541
  GET /public
374
542
  GET /guest
375
543
  GET /protected
376
544
  POST /refresh
377
545
  `
378
- : answers.authMode === "auth"
379
- ? `
546
+ : answers.authMode === "auth"
547
+ ? `
380
548
  POST /auth/register
381
549
  POST /auth/login
382
550
  POST /auth/refresh
383
551
  GET /protected
384
552
  `
385
- : `
553
+ : `
386
554
  POST /auth/register
387
555
  POST /auth/login
388
556
  POST /auth/refresh
@@ -391,11 +559,10 @@ ${answers.authMode === "base"
391
559
  GET /protected
392
560
  `}
393
561
 
394
-
395
562
  🔥 You're ready to build.
396
- `));
397
- if (isProduction) {
398
- console.log(`
563
+ `));
564
+ if (isProduction) {
565
+ console.log(`
399
566
  🚀 Production Ready Enabled:
400
567
 
401
568
  ✔ PM2 installed
@@ -403,16 +570,17 @@ ${answers.authMode === "base"
403
570
  ✔ Memory auto-restart (300MB)
404
571
 
405
572
  Run:
406
- npm run pm2:start
573
+ npm run pm2:start
407
574
  `);
575
+ }
408
576
  }
409
- }
410
- process.on("SIGINT", async () => {
411
- console.log("\n👋 Authenik8 setup cancelled.");
412
- if (projectCreated && fs.existsSync(targetDir)) {
413
- await fs.remove(targetDir);
414
- console.log("🧹 Cleaned up incomplete project.");
577
+ catch (err) {
578
+ console.error("Fatal error", err);
579
+ process.exit(1);
415
580
  }
581
+ }
582
+ process.on("SIGINT", () => {
583
+ console.log("\n👋 Cancelled.");
416
584
  process.exit(0);
417
585
  });
418
586
  main().catch(async (err) => {
@@ -424,12 +592,7 @@ main().catch(async (err) => {
424
592
  }
425
593
  process.exit(0);
426
594
  }
427
- console.error("\n❌ Unexpected error:");
428
- console.error(err);
429
- if (projectCreated && fs.existsSync(targetDir)) {
430
- await fs.remove(targetDir);
431
- console.log("🧹 Cleaned up incomplete project.");
432
- }
595
+ console.error("❌ Unexpected error:", err);
433
596
  process.exit(1);
434
597
  });
435
598
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,33 +1,32 @@
1
1
  {
2
2
  "name": "create-authenik8-app",
3
- "version": "2.0.4",
4
-
5
- "description":"Create production-ready backend APIs in seconds. Authenik8 scaffolds Express + Prisma projects with JWT authentication, database setup (PostgreSQL or SQLite), and scalable architecture out of the box.",
3
+ "version": "2.0.6",
4
+ "description": "Create production-ready backend APIs in seconds. Authenik8 scaffolds Express + Prisma projects with JWT authentication, database setup (PostgreSQL or SQLite), and scalable architecture out of the box.",
6
5
  "bin": {
7
6
  "create-authenik8-app": "dist/bin/index.js"
8
7
  },
9
8
  "keywords": [
10
- "cli",
11
- "create-app",
12
- "express",
13
- "node",
14
- "typescript",
15
- "prisma",
16
- "auth",
17
- "authentication",
18
- "scaffold",
19
- "boilerplate",
20
- "starter",
21
- "backend",
22
- "jwt",
23
- "redis",
24
- "api",
25
- "nodejs-cli",
26
- "project-generator",
27
- "fullstack-backend"
28
- ],
29
- "license":"MIT",
30
- "author":"Karabo Seeisa",
9
+ "cli",
10
+ "create-app",
11
+ "express",
12
+ "node",
13
+ "typescript",
14
+ "prisma",
15
+ "auth",
16
+ "authentication",
17
+ "scaffold",
18
+ "boilerplate",
19
+ "starter",
20
+ "backend",
21
+ "jwt",
22
+ "redis",
23
+ "api",
24
+ "nodejs-cli",
25
+ "project-generator",
26
+ "fullstack-backend"
27
+ ],
28
+ "license": "MIT",
29
+ "author": "Karabo Seeisa",
31
30
  "type": "module",
32
31
  "dependencies": {
33
32
  "authenik8-core": "^1.0.3",
@@ -44,6 +43,6 @@
44
43
  "devDependencies": {
45
44
  "@types/express": "^5.0.6",
46
45
  "@types/fs-extra": "^11.0.4",
47
- "@types/node": "^25.5.0"
46
+ "@types/node": "^25.6.0"
48
47
  }
49
48
  }
@@ -1,12 +0,0 @@
1
- import argon2 from "argon2";
2
-
3
- export const hashPassword = async (password: string): Promise<string> => {
4
- return argon2.hash(password);
5
- };
6
-
7
- export const comparePassword = async (
8
- password: string,
9
- hash: string
10
- ): Promise<boolean> => {
11
- return argon2.verify(hash, password);
12
- };
@@ -1,10 +1,16 @@
1
1
  import express from "express";
2
2
  import { getAuth } from "./auth";
3
3
 
4
+
4
5
  const router = express.Router();
5
- const auth = getAuth();
6
6
 
7
- router.get("/protected", auth.requireAdmin, (req, res) => {
7
+
8
+ router.get("/protected", (req, res) => {
9
+
10
+ const auth = getAuth()
11
+
12
+ return auth.requireAdmin(req, res, next);
13
+ }, (req, res) => {
8
14
  res.json({ message: "Protected route" });
9
15
  });
10
16
 
@@ -2,7 +2,7 @@ import express from "express";
2
2
  import passwordRoutes from "./auth/password.route";
3
3
  import oauthRoutes from "./auth/oauth.routes";
4
4
  import protectedRoutes from "./auth/protected.routes";
5
- import { initAuth } from "./auth";
5
+ import { initAuth } from "./auth/auth";
6
6
  const app = express();
7
7
  app.use(express.json());
8
8
 
@@ -1,12 +0,0 @@
1
- import argon2 from "argon2";
2
-
3
- export const hashPassword = async (password: string): Promise<string> => {
4
- return argon2.hash(password);
5
- };
6
-
7
- export const comparePassword = async (
8
- password: string,
9
- hash: string
10
- ): Promise<boolean> => {
11
- return argon2.verify(hash, password);
12
- };
@@ -1,4 +1,3 @@
1
-
2
- DATABASE_URL="postgresql://postgres:password@localhost:5432/authenik8_dev"
3
-
4
- DIRECT_URL="postgresql://postgres:password@localhost:5432/authenik8_dev"
1
+ DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public"
2
+ #localdev
3
+ DATABASE_URL="postgresql://postgres:password@localhost:5432/authenik8"
@@ -1,9 +0,0 @@
1
- JWT_SECRET=your_secret
2
- REFRESH_SECRET=your_secret
3
-
4
-
5
- # OAuth (if used)
6
- GOOGLE_CLIENT_ID=
7
- GOOGLE_CLIENT_SECRET=
8
- GITHUB_CLIENT_ID=
9
- GITHUB_CLIENT_SECRET=
@@ -1,9 +0,0 @@
1
- JWT_SECRET=your_secret
2
- REFRESH_SECRET=your_secret
3
-
4
-
5
- # OAuth (if used)
6
- GOOGLE_CLIENT_ID=
7
- GOOGLE_CLIENT_SECRET=
8
- GITHUB_CLIENT_ID=
9
- GITHUB_CLIENT_SECRET=