@supunkalharajayasinghe/project-cli 1.3.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 (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +380 -0
  3. package/dist/commands/create.d.ts +3 -0
  4. package/dist/commands/create.d.ts.map +1 -0
  5. package/dist/commands/create.js +48 -0
  6. package/dist/commands/create.js.map +1 -0
  7. package/dist/commands/greet.d.ts +3 -0
  8. package/dist/commands/greet.d.ts.map +1 -0
  9. package/dist/commands/greet.js +10 -0
  10. package/dist/commands/greet.js.map +1 -0
  11. package/dist/generators/applyAiPlan.d.ts +3 -0
  12. package/dist/generators/applyAiPlan.d.ts.map +1 -0
  13. package/dist/generators/applyAiPlan.js +426 -0
  14. package/dist/generators/applyAiPlan.js.map +1 -0
  15. package/dist/generators/applyFeatureModules.d.ts +4 -0
  16. package/dist/generators/applyFeatureModules.d.ts.map +1 -0
  17. package/dist/generators/applyFeatureModules.js +242 -0
  18. package/dist/generators/applyFeatureModules.js.map +1 -0
  19. package/dist/generators/applyFullstackPlan.d.ts +3 -0
  20. package/dist/generators/applyFullstackPlan.d.ts.map +1 -0
  21. package/dist/generators/applyFullstackPlan.js +413 -0
  22. package/dist/generators/applyFullstackPlan.js.map +1 -0
  23. package/dist/generators/applyPlan.d.ts +3 -0
  24. package/dist/generators/applyPlan.d.ts.map +1 -0
  25. package/dist/generators/applyPlan.js +22 -0
  26. package/dist/generators/applyPlan.js.map +1 -0
  27. package/dist/generators/applyWebsitePlan.d.ts +3 -0
  28. package/dist/generators/applyWebsitePlan.d.ts.map +1 -0
  29. package/dist/generators/applyWebsitePlan.js +1053 -0
  30. package/dist/generators/applyWebsitePlan.js.map +1 -0
  31. package/dist/generators/createNextBase.d.ts +3 -0
  32. package/dist/generators/createNextBase.d.ts.map +1 -0
  33. package/dist/generators/createNextBase.js +20 -0
  34. package/dist/generators/createNextBase.js.map +1 -0
  35. package/dist/generators/generateBasicProject.d.ts +3 -0
  36. package/dist/generators/generateBasicProject.d.ts.map +1 -0
  37. package/dist/generators/generateBasicProject.js +65 -0
  38. package/dist/generators/generateBasicProject.js.map +1 -0
  39. package/dist/generators/starterBranding.d.ts +9 -0
  40. package/dist/generators/starterBranding.d.ts.map +1 -0
  41. package/dist/generators/starterBranding.js +48 -0
  42. package/dist/generators/starterBranding.js.map +1 -0
  43. package/dist/generators/writeGeneratedReadme.d.ts +3 -0
  44. package/dist/generators/writeGeneratedReadme.d.ts.map +1 -0
  45. package/dist/generators/writeGeneratedReadme.js +99 -0
  46. package/dist/generators/writeGeneratedReadme.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +19 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/prompts/askBasicScaffoldOptions.d.ts +3 -0
  52. package/dist/prompts/askBasicScaffoldOptions.d.ts.map +1 -0
  53. package/dist/prompts/askBasicScaffoldOptions.js +36 -0
  54. package/dist/prompts/askBasicScaffoldOptions.js.map +1 -0
  55. package/dist/prompts/askCreatePlan.d.ts +3 -0
  56. package/dist/prompts/askCreatePlan.d.ts.map +1 -0
  57. package/dist/prompts/askCreatePlan.js +232 -0
  58. package/dist/prompts/askCreatePlan.js.map +1 -0
  59. package/dist/types.d.ts +64 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +2 -0
  62. package/dist/types.js.map +1 -0
  63. package/dist/utils/files.d.ts +14 -0
  64. package/dist/utils/files.d.ts.map +1 -0
  65. package/dist/utils/files.js +47 -0
  66. package/dist/utils/files.js.map +1 -0
  67. package/dist/utils/generateSecret.d.ts +2 -0
  68. package/dist/utils/generateSecret.d.ts.map +1 -0
  69. package/dist/utils/generateSecret.js +5 -0
  70. package/dist/utils/generateSecret.js.map +1 -0
  71. package/dist/utils/pathExists.d.ts +2 -0
  72. package/dist/utils/pathExists.d.ts.map +1 -0
  73. package/dist/utils/pathExists.js +11 -0
  74. package/dist/utils/pathExists.js.map +1 -0
  75. package/dist/utils/runCommand.d.ts +8 -0
  76. package/dist/utils/runCommand.d.ts.map +1 -0
  77. package/dist/utils/runCommand.js +59 -0
  78. package/dist/utils/runCommand.js.map +1 -0
  79. package/dist/utils/strings.d.ts +3 -0
  80. package/dist/utils/strings.d.ts.map +1 -0
  81. package/dist/utils/strings.js +15 -0
  82. package/dist/utils/strings.js.map +1 -0
  83. package/dist/utils/validateFreeText.d.ts +13 -0
  84. package/dist/utils/validateFreeText.d.ts.map +1 -0
  85. package/dist/utils/validateFreeText.js +19 -0
  86. package/dist/utils/validateFreeText.js.map +1 -0
  87. package/dist/utils/validateProjectName.d.ts +7 -0
  88. package/dist/utils/validateProjectName.d.ts.map +1 -0
  89. package/dist/utils/validateProjectName.js +42 -0
  90. package/dist/utils/validateProjectName.js.map +1 -0
  91. package/dist/utils/writeJson.d.ts +2 -0
  92. package/dist/utils/writeJson.d.ts.map +1 -0
  93. package/dist/utils/writeJson.js +2 -0
  94. package/dist/utils/writeJson.js.map +1 -0
  95. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyWebsitePlan.js","sourceRoot":"","sources":["../../src/generators/applyWebsitePlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CreatePlan } from '../types.js';
2
+ export declare function createNextBase(plan: CreatePlan): Promise<void>;
3
+ //# sourceMappingURL=createNextBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createNextBase.d.ts","sourceRoot":"","sources":["../../src/generators/createNextBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpE"}
@@ -0,0 +1,20 @@
1
+ import { runCommand } from '../utils/runCommand.js';
2
+ export async function createNextBase(plan) {
3
+ await runCommand('npx', [
4
+ 'create-next-app@latest',
5
+ plan.projectName,
6
+ '--ts',
7
+ '--tailwind',
8
+ '--eslint',
9
+ '--app',
10
+ '--src-dir',
11
+ '--import-alias',
12
+ '@/*',
13
+ '--use-npm',
14
+ '--skip-install',
15
+ '--disable-git',
16
+ '--yes',
17
+ '--no-agents-md',
18
+ ], process.cwd());
19
+ }
20
+ //# sourceMappingURL=createNextBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createNextBase.js","sourceRoot":"","sources":["../../src/generators/createNextBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAgB;IACnD,MAAM,UAAU,CACd,KAAK,EACL;QACE,wBAAwB;QACxB,IAAI,CAAC,WAAW;QAChB,MAAM;QACN,YAAY;QACZ,UAAU;QACV,OAAO;QACP,WAAW;QACX,gBAAgB;QAChB,KAAK;QACL,WAAW;QACX,gBAAgB;QAChB,eAAe;QACf,OAAO;QACP,gBAAgB;KACjB,EACD,OAAO,CAAC,GAAG,EAAE,CACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BasicScaffoldOptions } from '../types.js';
2
+ export declare function generateBasicProject(options: BasicScaffoldOptions): Promise<void>;
3
+ //# sourceMappingURL=generateBasicProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateBasicProject.d.ts","sourceRoot":"","sources":["../../src/generators/generateBasicProject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,aAAa,CAAC;AAIrB,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Ff"}
@@ -0,0 +1,65 @@
1
+ import path from 'node:path';
2
+ import { writeJson } from '../utils/writeJson.js';
3
+ import { writeFileSafe, ensureDir } from '../utils/files.js';
4
+ export async function generateBasicProject(options) {
5
+ const { projectName, targetPath, useTypeScript, includeLint, includeJest, includeDocker, } = options;
6
+ await ensureDir(targetPath);
7
+ const packageJson = {
8
+ name: projectName,
9
+ version: '1.0.0',
10
+ description: 'Generated by ts-cli-tool',
11
+ main: useTypeScript ? 'src/index.ts' : 'src/index.js',
12
+ scripts: {
13
+ start: useTypeScript ? 'tsx src/index.ts' : 'node src/index.js',
14
+ },
15
+ devDependencies: {},
16
+ };
17
+ if (useTypeScript) {
18
+ packageJson.devDependencies.typescript = '^5.0.0';
19
+ packageJson.devDependencies.tsx = '^4.0.0';
20
+ packageJson.devDependencies['@types/node'] = '^20.0.0';
21
+ }
22
+ if (includeLint) {
23
+ packageJson.devDependencies.eslint = '^8.0.0';
24
+ packageJson.scripts.lint = 'eslint src/**/*';
25
+ const eslintConfig = {
26
+ env: { node: true },
27
+ extends: ['eslint:recommended'],
28
+ };
29
+ if (useTypeScript) {
30
+ packageJson.devDependencies['@typescript-eslint/parser'] = '^7.0.0';
31
+ packageJson.devDependencies['@typescript-eslint/eslint-plugin'] =
32
+ '^7.0.0';
33
+ eslintConfig.parser = '@typescript-eslint/parser';
34
+ eslintConfig.extends.push('plugin:@typescript-eslint/recommended');
35
+ }
36
+ await writeJson(path.join(targetPath, '.eslintrc.json'), eslintConfig);
37
+ }
38
+ if (includeJest) {
39
+ packageJson.devDependencies.jest = '^29.0.0';
40
+ packageJson.scripts.test = 'jest';
41
+ let jestConfig = `module.exports = { testEnvironment: 'node' };\n`;
42
+ if (useTypeScript) {
43
+ packageJson.devDependencies['ts-jest'] = '^29.0.0';
44
+ packageJson.devDependencies['@types/jest'] = '^29.0.0';
45
+ jestConfig = `module.exports = { preset: 'ts-jest', testEnvironment: 'node' };\n`;
46
+ }
47
+ await writeFileSafe(path.join(targetPath, 'jest.config.js'), jestConfig);
48
+ }
49
+ await writeJson(path.join(targetPath, 'package.json'), packageJson);
50
+ if (includeDocker) {
51
+ const dockerfileContent = `FROM node:18-alpine
52
+ WORKDIR /usr/src/app
53
+ COPY package*.json ./
54
+ RUN npm install
55
+ COPY . .
56
+ CMD ["npm", "start"]
57
+ `;
58
+ await writeFileSafe(path.join(targetPath, 'Dockerfile'), dockerfileContent);
59
+ }
60
+ await ensureDir(path.join(targetPath, 'src'));
61
+ const fileExt = useTypeScript ? 'ts' : 'js';
62
+ const fileContent = `console.log('🚀 Successfully running ${projectName}!');\n`;
63
+ await writeFileSafe(path.join(targetPath, `src/index.${fileExt}`), fileContent);
64
+ }
65
+ //# sourceMappingURL=generateBasicProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateBasicProject.js","sourceRoot":"","sources":["../../src/generators/generateBasicProject.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA6B;IAE7B,MAAM,EACJ,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,GACd,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAgB;QAC/B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc;QACrD,OAAO,EAAE;YACP,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB;SAChE;QACD,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,WAAW,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC;QAClD,WAAW,CAAC,eAAe,CAAC,GAAG,GAAG,QAAQ,CAAC;QAC3C,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IACzD,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC9C,WAAW,CAAC,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAE7C,MAAM,YAAY,GAAiB;YACjC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACnB,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAChC,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,eAAe,CAAC,2BAA2B,CAAC,GAAG,QAAQ,CAAC;YACpE,WAAW,CAAC,eAAe,CAAC,kCAAkC,CAAC;gBAC7D,QAAQ,CAAC;YAEX,YAAY,CAAC,MAAM,GAAG,2BAA2B,CAAC;YAClD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC;QAC7C,WAAW,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;QAElC,IAAI,UAAU,GAAG,iDAAiD,CAAC;QAEnE,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;YACnD,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;YAEvD,UAAU,GAAG,oEAAoE,CAAC;QACpF,CAAC;QAED,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;IAEpE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,iBAAiB,GAAG;;;;;;CAM7B,CAAC;QAEE,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5C,MAAM,WAAW,GAAG,wCAAwC,WAAW,QAAQ,CAAC;IAEhF,MAAM,aAAa,CACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,OAAO,EAAE,CAAC,EAC7C,WAAW,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const starterBranding: {
2
+ readonly cliName: "project-cli";
3
+ readonly version: "v1.3.0";
4
+ readonly releaseName: "Premium Blueprint Starters";
5
+ readonly githubUrl: "https://github.com/SupunKalharaJayasinghe/ts-cli-tool";
6
+ readonly mediumUrl: "https://medium.com/";
7
+ };
8
+ export declare function writeGlobalsCss(targetPath: string): Promise<void>;
9
+ //# sourceMappingURL=starterBranding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starterBranding.d.ts","sourceRoot":"","sources":["../../src/generators/starterBranding.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCvE"}
@@ -0,0 +1,48 @@
1
+ import path from 'node:path';
2
+ import { writeFileSafe } from '../utils/files.js';
3
+ export const starterBranding = {
4
+ cliName: 'project-cli',
5
+ version: 'v1.3.0',
6
+ releaseName: 'Premium Blueprint Starters',
7
+ githubUrl: 'https://github.com/SupunKalharaJayasinghe/ts-cli-tool',
8
+ mediumUrl: 'https://medium.com/',
9
+ };
10
+ export async function writeGlobalsCss(targetPath) {
11
+ const content = `@import "tailwindcss";
12
+
13
+ :root {
14
+ color-scheme: light;
15
+ }
16
+
17
+ * {
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ html {
22
+ scroll-behavior: smooth;
23
+ }
24
+
25
+ body {
26
+ margin: 0;
27
+ min-height: 100vh;
28
+ background:
29
+ radial-gradient(circle at top left, rgba(37, 99, 235, 0.12), transparent 30rem),
30
+ radial-gradient(circle at top right, rgba(99, 102, 241, 0.10), transparent 28rem),
31
+ linear-gradient(180deg, #f8fafc 0%, #ffffff 42%, #eef2ff 100%);
32
+ color: #0f172a;
33
+ }
34
+
35
+ a {
36
+ color: inherit;
37
+ text-decoration: none;
38
+ }
39
+
40
+ button,
41
+ input,
42
+ textarea {
43
+ font: inherit;
44
+ }
45
+ `;
46
+ await writeFileSafe(path.join(targetPath, 'src/app/globals.css'), content);
47
+ }
48
+ //# sourceMappingURL=starterBranding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starterBranding.js","sourceRoot":"","sources":["../../src/generators/starterBranding.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,uDAAuD;IAClE,SAAS,EAAE,qBAAqB;CACxB,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAkB;IACtD,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCjB,CAAC;IACA,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CreatePlan } from '../types.js';
2
+ export declare function writeGeneratedReadme(plan: CreatePlan): Promise<void>;
3
+ //# sourceMappingURL=writeGeneratedReadme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeGeneratedReadme.d.ts","sourceRoot":"","sources":["../../src/generators/writeGeneratedReadme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqG1E"}
@@ -0,0 +1,99 @@
1
+ import path from 'node:path';
2
+ import { writeFileSafe } from '../utils/files.js';
3
+ import { toTitle } from '../utils/strings.js';
4
+ import { starterBranding } from './starterBranding.js';
5
+ export async function writeGeneratedReadme(plan) {
6
+ const modules = plan.modules.length > 0
7
+ ? plan.modules.map((module) => `- ${module}`).join('\n')
8
+ : '- none';
9
+ const envInstructions = plan.modules.includes('env-example')
10
+ ? `
11
+
12
+ ## Environment
13
+
14
+ Create your local environment file:
15
+
16
+ \`\`\`bash
17
+ cp .env.example .env
18
+ \`\`\`
19
+
20
+ On Windows PowerShell:
21
+
22
+ \`\`\`powershell
23
+ Copy-Item .env.example .env
24
+ \`\`\`
25
+ `
26
+ : '';
27
+ const databaseInstructions = plan.modules.includes('prisma')
28
+ ? `
29
+
30
+ ## Database
31
+
32
+ After configuring your \`.env\` file, push the Prisma schema:
33
+
34
+ \`\`\`bash
35
+ npm run db:push
36
+ \`\`\`
37
+
38
+ Open Prisma Studio:
39
+
40
+ \`\`\`bash
41
+ npm run db
42
+ \`\`\`
43
+ `
44
+ : '';
45
+ const dockerInstructions = plan.modules.includes('docker')
46
+ ? `
47
+
48
+ ## Docker
49
+
50
+ Build and run the project with Docker when needed.
51
+
52
+ If \`docker-compose.yml\` was generated, start services with:
53
+
54
+ \`\`\`bash
55
+ docker compose up -d
56
+ \`\`\`
57
+ `
58
+ : '';
59
+ await writeFileSafe(path.join(plan.targetPath, 'README.md'), `# ${toTitle(plan.projectName)}
60
+
61
+ This project was bootstrapped with [${starterBranding.cliName}](https://github.com/SupunKalharaJayasinghe/ts-cli-tool) (${starterBranding.version} - ${starterBranding.releaseName}).
62
+
63
+ ## Documentation Links
64
+ - **CLI Repository**: [GitHub](${starterBranding.githubUrl})
65
+ - **Release Documentation**: [Medium Docs](${starterBranding.mediumUrl})
66
+
67
+ ## Blueprint & Shape
68
+ - **Blueprint Type**: \`${plan.blueprint}\`
69
+ - **Project Structure**: \`${plan.shape}\`
70
+
71
+ ## Enabled Modules
72
+ ${modules}
73
+
74
+ ## Getting started
75
+
76
+ Install dependencies:
77
+
78
+ \`\`\`bash
79
+ npm install
80
+ \`\`\`
81
+
82
+ Start the development server:
83
+
84
+ \`\`\`bash
85
+ npm run dev
86
+ \`\`\`
87
+
88
+ Open [http://localhost:3000](http://localhost:3000) in your browser to see the result.
89
+
90
+ ## Customizing the Starter UI
91
+
92
+ You can easily modify pages, layouts, and components:
93
+ - **Pages**: Edit code in \`src/app/\` (e.g., \`src/app/page.tsx\`).
94
+ - **Styles**: Global theme properties are managed in \`src/app/globals.css\`.
95
+ - **Components**: Shared layout items are located in \`src/components/\` using premium \`lucide-react\` icons.
96
+ ${envInstructions}${databaseInstructions}${dockerInstructions}
97
+ `);
98
+ }
99
+ //# sourceMappingURL=writeGeneratedReadme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeGeneratedReadme.js","sourceRoot":"","sources":["../../src/generators/writeGeneratedReadme.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAgB;IACzD,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,CAAC,CAAC,QAAQ,CAAC;IAEf,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC1D,CAAC,CAAC;;;;;;;;;;;;;;;CAeL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1D,CAAC,CAAC;;;;;;;;;;;;;;;CAeL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxD,CAAC,CAAC;;;;;;;;;;;CAWL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,CACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EACvC,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;;sCAEI,eAAe,CAAC,OAAO,6DAA6D,eAAe,CAAC,OAAO,MAAM,eAAe,CAAC,WAAW;;;iCAGjJ,eAAe,CAAC,SAAS;6CACb,eAAe,CAAC,SAAS;;;0BAG5C,IAAI,CAAC,SAAS;6BACX,IAAI,CAAC,KAAK;;;EAGrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;EAwBP,eAAe,GAAG,oBAAoB,GAAG,kBAAkB;CAC5D,CACE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { Command } from 'commander';
6
+ import { registerCreateCommand } from './commands/create.js';
7
+ import { registerGreetCommand } from './commands/greet.js';
8
+ const __dirname = fileURLToPath(new URL('.', import.meta.url));
9
+ const packageJsonPath = join(__dirname, '../package.json');
10
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
11
+ const program = new Command();
12
+ program
13
+ .name('project-cli')
14
+ .description('An intent-based TypeScript project scaffolder')
15
+ .version(packageJson.version);
16
+ registerGreetCommand(program);
17
+ registerCreateCommand(program);
18
+ program.parse();
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BasicScaffoldOptions } from '../types.js';
2
+ export declare function askBasicScaffoldOptions(): Promise<BasicScaffoldOptions>;
3
+ //# sourceMappingURL=askBasicScaffoldOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askBasicScaffoldOptions.d.ts","sourceRoot":"","sources":["../../src/prompts/askBasicScaffoldOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAmC7E"}
@@ -0,0 +1,36 @@
1
+ import { confirm, input } from '@inquirer/prompts';
2
+ import path from 'node:path';
3
+ import { pathExists } from '../utils/pathExists.js';
4
+ import { validateProjectNamePrompt } from '../utils/validateProjectName.js';
5
+ export async function askBasicScaffoldOptions() {
6
+ const projectName = await input({
7
+ message: 'What is the name of your project?',
8
+ default: 'my-new-app',
9
+ validate: validateProjectNamePrompt,
10
+ });
11
+ const useTypeScript = await confirm({
12
+ message: 'Would you like to initialize this as a TypeScript project?',
13
+ default: true,
14
+ });
15
+ const includeLint = await confirm({
16
+ message: 'Would you like to add ESLint for code quality?',
17
+ default: true,
18
+ });
19
+ const includeJest = await confirm({
20
+ message: 'Would you like to add Jest for automated testing?',
21
+ default: true,
22
+ });
23
+ const includeDocker = await confirm({
24
+ message: 'Would you like to generate a Dockerfile for containerization?',
25
+ default: false,
26
+ });
27
+ return {
28
+ projectName,
29
+ targetPath: path.join(process.cwd(), projectName),
30
+ useTypeScript,
31
+ includeLint,
32
+ includeJest,
33
+ includeDocker,
34
+ };
35
+ }
36
+ //# sourceMappingURL=askBasicScaffoldOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askBasicScaffoldOptions.js","sourceRoot":"","sources":["../../src/prompts/askBasicScaffoldOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;QAC9B,OAAO,EAAE,mCAAmC;QAC5C,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,yBAAyB;KACpC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;QAClC,OAAO,EAAE,4DAA4D;QACrE,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;QAChC,OAAO,EAAE,gDAAgD;QACzD,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;QAChC,OAAO,EAAE,mDAAmD;QAC5D,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;QAClC,OAAO,EAAE,+DAA+D;QACxE,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC;QACjD,aAAa;QACb,WAAW;QACX,WAAW;QACX,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CreatePlan } from '../types.js';
2
+ export declare function askCreatePlan(): Promise<CreatePlan>;
3
+ //# sourceMappingURL=askCreatePlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askCreatePlan.d.ts","sourceRoot":"","sources":["../../src/prompts/askCreatePlan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,UAAU,EAKX,MAAM,aAAa,CAAC;AAIrB,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAczD"}
@@ -0,0 +1,232 @@
1
+ import { checkbox, confirm, input, select } from '@inquirer/prompts';
2
+ import path from 'node:path';
3
+ import { pathExists } from '../utils/pathExists.js';
4
+ import { validateProjectNamePrompt } from '../utils/validateProjectName.js';
5
+ export async function askCreatePlan() {
6
+ const projectName = await askProjectName();
7
+ const targetPath = path.join(process.cwd(), projectName);
8
+ const blueprint = await askBlueprint();
9
+ if (blueprint === 'website') {
10
+ return askWebsitePlan(projectName, targetPath, blueprint);
11
+ }
12
+ if (blueprint === 'fullstack-product') {
13
+ return askFullstackPlan(projectName, targetPath, blueprint);
14
+ }
15
+ return askAiPlan(projectName, targetPath, blueprint);
16
+ }
17
+ async function askProjectName() {
18
+ return input({
19
+ message: 'Project name:',
20
+ default: 'my-app',
21
+ validate: validateProjectNamePrompt,
22
+ });
23
+ }
24
+ async function askBlueprint() {
25
+ return select({
26
+ message: 'Choose a project blueprint:',
27
+ choices: [
28
+ {
29
+ name: 'Website — landing page, portfolio, business site, documentation',
30
+ value: 'website',
31
+ },
32
+ {
33
+ name: 'Full-stack Product — SaaS, dashboard, app with database/backend logic',
34
+ value: 'fullstack-product',
35
+ },
36
+ {
37
+ name: 'AI App — chat app, assistant, content generator',
38
+ value: 'ai-app',
39
+ },
40
+ ],
41
+ });
42
+ }
43
+ async function askWebsitePlan(projectName, targetPath, blueprint) {
44
+ const shape = await select({
45
+ message: 'What type of website?',
46
+ choices: [
47
+ { name: 'One-page landing page', value: 'one-page' },
48
+ { name: 'Multi-page website', value: 'multi-page' },
49
+ ],
50
+ });
51
+ const modules = [];
52
+ let pages = [];
53
+ let sections = [];
54
+ if (shape === 'one-page') {
55
+ sections = await checkbox({
56
+ message: 'Which sections do you want?',
57
+ choices: [
58
+ { name: 'Hero', value: 'hero', checked: true },
59
+ { name: 'Features', value: 'features', checked: true },
60
+ { name: 'About', value: 'about' },
61
+ { name: 'Pricing', value: 'pricing' },
62
+ { name: 'FAQ', value: 'faq' },
63
+ { name: 'Contact', value: 'contact', checked: true },
64
+ ],
65
+ });
66
+ if (sections.length === 0) {
67
+ sections = ['hero', 'features', 'contact'];
68
+ }
69
+ }
70
+ if (shape === 'multi-page') {
71
+ pages = await checkbox({
72
+ message: 'Which pages do you want?',
73
+ choices: [
74
+ { name: 'Home', value: 'home', checked: true },
75
+ { name: 'About', value: 'about', checked: true },
76
+ { name: 'Services', value: 'services', checked: true },
77
+ { name: 'Projects', value: 'projects' },
78
+ { name: 'Blog', value: 'blog' },
79
+ { name: 'Contact', value: 'contact', checked: true },
80
+ ],
81
+ });
82
+ if (!pages.includes('home')) {
83
+ pages.unshift('home');
84
+ }
85
+ }
86
+ const addSeo = await confirm({
87
+ message: 'Add SEO starter files?',
88
+ default: true,
89
+ });
90
+ if (addSeo) {
91
+ modules.push('seo');
92
+ }
93
+ const addContactForm = await confirm({
94
+ message: 'Add contact form placeholder?',
95
+ default: true,
96
+ });
97
+ if (addContactForm) {
98
+ modules.push('contact-form');
99
+ }
100
+ const sharedModules = await askSharedToolingModules({
101
+ defaultDocker: false,
102
+ });
103
+ const installDependencies = await askInstallDependencies();
104
+ return createPlan({
105
+ projectName,
106
+ targetPath,
107
+ blueprint,
108
+ shape,
109
+ pages,
110
+ sections,
111
+ modules: [...modules, ...sharedModules],
112
+ installDependencies,
113
+ });
114
+ }
115
+ async function askFullstackPlan(projectName, targetPath, blueprint) {
116
+ const shape = await select({
117
+ message: 'What type of full-stack product?',
118
+ choices: [
119
+ { name: 'SaaS starter', value: 'saas' },
120
+ { name: 'Dashboard with database', value: 'dashboard' },
121
+ { name: 'Custom full-stack app', value: 'custom' },
122
+ ],
123
+ });
124
+ const modules = [];
125
+ const useDatabase = await confirm({
126
+ message: 'Add Prisma + PostgreSQL?',
127
+ default: true,
128
+ });
129
+ if (useDatabase) {
130
+ modules.push('prisma', 'postgresql', 'env-example');
131
+ }
132
+ const useRedis = await confirm({
133
+ message: 'Add Redis for cache, sessions, queues, or rate limiting?',
134
+ default: false,
135
+ });
136
+ if (useRedis) {
137
+ modules.push('redis', 'env-example');
138
+ }
139
+ const sharedModules = await askSharedToolingModules({
140
+ defaultDocker: true,
141
+ });
142
+ const installDependencies = await askInstallDependencies();
143
+ return createPlan({
144
+ projectName,
145
+ targetPath,
146
+ blueprint,
147
+ shape,
148
+ pages: [],
149
+ sections: [],
150
+ modules: [...modules, ...sharedModules],
151
+ installDependencies,
152
+ });
153
+ }
154
+ async function askAiPlan(projectName, targetPath, blueprint) {
155
+ const shape = await select({
156
+ message: 'What type of AI app?',
157
+ choices: [
158
+ { name: 'Chat app', value: 'chat' },
159
+ { name: 'AI assistant', value: 'assistant' },
160
+ { name: 'Content generator', value: 'content-generator' },
161
+ ],
162
+ });
163
+ const modules = ['ai-sdk', 'env-example'];
164
+ const storeData = await confirm({
165
+ message: 'Store conversations or generated content in a database?',
166
+ default: false,
167
+ });
168
+ if (storeData) {
169
+ modules.push('prisma', 'postgresql');
170
+ }
171
+ const useRedis = await confirm({
172
+ message: 'Add Redis for rate limiting or temporary AI state?',
173
+ default: false,
174
+ });
175
+ if (useRedis) {
176
+ modules.push('redis');
177
+ }
178
+ const sharedModules = await askSharedToolingModules({
179
+ defaultDocker: false,
180
+ });
181
+ const installDependencies = await askInstallDependencies();
182
+ return createPlan({
183
+ projectName,
184
+ targetPath,
185
+ blueprint,
186
+ shape,
187
+ pages: [],
188
+ sections: [],
189
+ modules: [...modules, ...sharedModules],
190
+ installDependencies,
191
+ });
192
+ }
193
+ async function askSharedToolingModules(options) {
194
+ const modules = [];
195
+ const addDocker = await confirm({
196
+ message: 'Add Docker files?',
197
+ default: options.defaultDocker,
198
+ });
199
+ if (addDocker) {
200
+ modules.push('docker');
201
+ }
202
+ const addGithubActions = await confirm({
203
+ message: 'Add GitHub Actions CI?',
204
+ default: true,
205
+ });
206
+ if (addGithubActions) {
207
+ modules.push('github-actions');
208
+ }
209
+ return modules;
210
+ }
211
+ async function askInstallDependencies() {
212
+ return confirm({
213
+ message: 'Install dependencies after generation?',
214
+ default: true,
215
+ });
216
+ }
217
+ function createPlan(options) {
218
+ return {
219
+ projectName: options.projectName,
220
+ targetPath: options.targetPath,
221
+ blueprint: options.blueprint,
222
+ shape: options.shape,
223
+ pages: options.pages,
224
+ sections: options.sections,
225
+ modules: uniqueModules(options.modules),
226
+ installDependencies: options.installDependencies,
227
+ };
228
+ }
229
+ function uniqueModules(modules) {
230
+ return Array.from(new Set(modules));
231
+ }
232
+ //# sourceMappingURL=askCreatePlan.js.map