create-coreback 1.0.1

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 (96) hide show
  1. package/.github/PUBLISH.md +58 -0
  2. package/.github/workflows/publish.yml +78 -0
  3. package/LICENSE +21 -0
  4. package/README.md +62 -0
  5. package/dist/createProject.d.ts +2 -0
  6. package/dist/createProject.d.ts.map +1 -0
  7. package/dist/createProject.js +70 -0
  8. package/dist/createProject.js.map +1 -0
  9. package/dist/generators/cursorRules.d.ts +2 -0
  10. package/dist/generators/cursorRules.d.ts.map +1 -0
  11. package/dist/generators/cursorRules.js +35 -0
  12. package/dist/generators/cursorRules.js.map +1 -0
  13. package/dist/generators/docker.d.ts +3 -0
  14. package/dist/generators/docker.d.ts.map +1 -0
  15. package/dist/generators/docker.js +119 -0
  16. package/dist/generators/docker.js.map +1 -0
  17. package/dist/generators/envExample.d.ts +3 -0
  18. package/dist/generators/envExample.d.ts.map +1 -0
  19. package/dist/generators/envExample.js +39 -0
  20. package/dist/generators/envExample.js.map +1 -0
  21. package/dist/generators/eslint.d.ts +2 -0
  22. package/dist/generators/eslint.d.ts.map +1 -0
  23. package/dist/generators/eslint.js +32 -0
  24. package/dist/generators/eslint.js.map +1 -0
  25. package/dist/generators/githubActions.d.ts +3 -0
  26. package/dist/generators/githubActions.d.ts.map +1 -0
  27. package/dist/generators/githubActions.js +68 -0
  28. package/dist/generators/githubActions.js.map +1 -0
  29. package/dist/generators/gitignore.d.ts +2 -0
  30. package/dist/generators/gitignore.d.ts.map +1 -0
  31. package/dist/generators/gitignore.js +50 -0
  32. package/dist/generators/gitignore.js.map +1 -0
  33. package/dist/generators/index.d.ts +3 -0
  34. package/dist/generators/index.d.ts.map +1 -0
  35. package/dist/generators/index.js +34 -0
  36. package/dist/generators/index.js.map +1 -0
  37. package/dist/generators/jest.d.ts +2 -0
  38. package/dist/generators/jest.d.ts.map +1 -0
  39. package/dist/generators/jest.js +23 -0
  40. package/dist/generators/jest.js.map +1 -0
  41. package/dist/generators/packageJson.d.ts +3 -0
  42. package/dist/generators/packageJson.d.ts.map +1 -0
  43. package/dist/generators/packageJson.js +80 -0
  44. package/dist/generators/packageJson.js.map +1 -0
  45. package/dist/generators/prettier.d.ts +2 -0
  46. package/dist/generators/prettier.d.ts.map +1 -0
  47. package/dist/generators/prettier.js +14 -0
  48. package/dist/generators/prettier.js.map +1 -0
  49. package/dist/generators/prisma.d.ts +3 -0
  50. package/dist/generators/prisma.d.ts.map +1 -0
  51. package/dist/generators/prisma.js +55 -0
  52. package/dist/generators/prisma.js.map +1 -0
  53. package/dist/generators/sourceFiles.d.ts +3 -0
  54. package/dist/generators/sourceFiles.d.ts.map +1 -0
  55. package/dist/generators/sourceFiles.js +767 -0
  56. package/dist/generators/sourceFiles.js.map +1 -0
  57. package/dist/generators/tsconfig.d.ts +2 -0
  58. package/dist/generators/tsconfig.d.ts.map +1 -0
  59. package/dist/generators/tsconfig.js +32 -0
  60. package/dist/generators/tsconfig.js.map +1 -0
  61. package/dist/index.d.ts +3 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +42 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/prompts.d.ts +3 -0
  66. package/dist/prompts.d.ts.map +1 -0
  67. package/dist/prompts.js +56 -0
  68. package/dist/prompts.js.map +1 -0
  69. package/dist/types.d.ts +10 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +2 -0
  72. package/dist/types.js.map +1 -0
  73. package/dist/utils/parseArgs.d.ts +2 -0
  74. package/dist/utils/parseArgs.d.ts.map +1 -0
  75. package/dist/utils/parseArgs.js +6 -0
  76. package/dist/utils/parseArgs.js.map +1 -0
  77. package/package.json +46 -0
  78. package/src/createProject.ts +86 -0
  79. package/src/generators/cursorRules.ts +39 -0
  80. package/src/generators/docker.ts +131 -0
  81. package/src/generators/envExample.ts +49 -0
  82. package/src/generators/eslint.ts +38 -0
  83. package/src/generators/githubActions.ts +79 -0
  84. package/src/generators/gitignore.ts +52 -0
  85. package/src/generators/index.ts +45 -0
  86. package/src/generators/jest.ts +29 -0
  87. package/src/generators/packageJson.ts +89 -0
  88. package/src/generators/prettier.ts +22 -0
  89. package/src/generators/prisma.ts +66 -0
  90. package/src/generators/sourceFiles.ts +840 -0
  91. package/src/generators/tsconfig.ts +34 -0
  92. package/src/index.ts +45 -0
  93. package/src/prompts.ts +62 -0
  94. package/src/types.ts +11 -0
  95. package/src/utils/parseArgs.ts +6 -0
  96. package/tsconfig.json +21 -0
@@ -0,0 +1,34 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+
4
+ export async function generateTsConfig(projectPath: string): Promise<void> {
5
+ const tsconfig = {
6
+ compilerOptions: {
7
+ target: 'ES2022',
8
+ module: 'ES2022',
9
+ lib: ['ES2022'],
10
+ moduleResolution: 'node',
11
+ outDir: './dist',
12
+ rootDir: './src',
13
+ strict: true,
14
+ esModuleInterop: true,
15
+ skipLibCheck: true,
16
+ forceConsistentCasingInFileNames: true,
17
+ resolveJsonModule: true,
18
+ declaration: true,
19
+ declarationMap: true,
20
+ sourceMap: true,
21
+ baseUrl: '.',
22
+ paths: {
23
+ '@/*': ['src/*'],
24
+ },
25
+ },
26
+ include: ['src/**/*'],
27
+ exclude: ['node_modules', 'dist', 'tests'],
28
+ };
29
+
30
+ await fs.writeJSON(path.join(projectPath, 'tsconfig.json'), tsconfig, {
31
+ spaces: 2,
32
+ });
33
+ }
34
+
package/src/index.ts ADDED
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { createProject } from './createProject.js';
4
+ import { parseArgs } from './utils/parseArgs.js';
5
+ import chalk from 'chalk';
6
+
7
+ const banner = `
8
+ ${chalk.cyan.bold('╔═══════════════════════════════════════════════════════════════╗')}
9
+ ${chalk.cyan.bold('║')} ${chalk.cyan.bold('║')}
10
+ ${chalk.cyan.bold('║')} ${chalk.white.bold(' ██████╗ ██████╗ ██████╗ ███████╗')} ${chalk.cyan.bold('║')}
11
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██╔════╝██╔═══██╗██╔══██╗██╔════╝')} ${chalk.cyan.bold('║')}
12
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██║ ██║ ██║██████╔╝█████╗ ')} ${chalk.cyan.bold('║')}
13
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██║ ██║ ██║██╔══██╗██╔══╝ ')} ${chalk.cyan.bold('║')}
14
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('╚██████╗╚██████╝ ██║ ██║███████╗')} ${chalk.cyan.bold('║')}
15
+ ${chalk.cyan.bold('║')} ${chalk.cyan.bold('║')}
16
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██████╗ █████╗ ██████╗██╗ ██╗')} ${chalk.cyan.bold('║')}
17
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██╔══██╗██╔══██╗██╔════╝██║ ██╔╝')} ${chalk.cyan.bold('║')}
18
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██████╔╝███████║██║ █████╔╝ ')} ${chalk.cyan.bold('║')}
19
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██╔══██╗██╔══██║██║ ██╔═██╗ ')} ${chalk.cyan.bold('║')}
20
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('██████╔╝██║ ██║╚██████╗██║ ██╗')} ${chalk.cyan.bold('║')}
21
+ ${chalk.cyan.bold('║')} ${chalk.white.bold('╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝')} ${chalk.cyan.bold('║')}
22
+ ${chalk.cyan.bold('║')} ${chalk.cyan.bold('║')}
23
+ ${chalk.cyan.bold('║')} ${chalk.gray(' Production-Ready Backend Generator')} ${chalk.cyan.bold('║')}
24
+ ${chalk.cyan.bold('║')} ${chalk.cyan.bold('║')}
25
+ ${chalk.cyan.bold('╚═══════════════════════════════════════════════════════════════╝')}
26
+ `;
27
+
28
+ async function main() {
29
+ try {
30
+ console.log(banner);
31
+
32
+ const projectName = parseArgs();
33
+ await createProject(projectName);
34
+ } catch (error) {
35
+ if (error instanceof Error) {
36
+ console.error(chalk.red('\n❌ Error:'), error.message);
37
+ } else {
38
+ console.error(chalk.red('\n❌ Unexpected error occurred'));
39
+ }
40
+ process.exit(1);
41
+ }
42
+ }
43
+
44
+ main();
45
+
package/src/prompts.ts ADDED
@@ -0,0 +1,62 @@
1
+ import inquirer from 'inquirer';
2
+ import chalk from 'chalk';
3
+ import { ProjectConfig, DatabaseType, PackageManager } from './types.js';
4
+
5
+ export async function promptProjectConfig(
6
+ defaultName?: string
7
+ ): Promise<ProjectConfig> {
8
+ const answers = await inquirer.prompt([
9
+ {
10
+ type: 'input',
11
+ name: 'projectName',
12
+ message: 'Project name:',
13
+ default: defaultName || 'my-backend',
14
+ validate: (input: string) => {
15
+ if (!input.trim()) {
16
+ return 'Project name cannot be empty';
17
+ }
18
+ if (!/^[a-z0-9-]+$/.test(input)) {
19
+ return 'Project name must be lowercase, alphanumeric, and can contain hyphens';
20
+ }
21
+ return true;
22
+ },
23
+ filter: (input: string) => input.toLowerCase().trim(),
24
+ },
25
+ {
26
+ type: 'list',
27
+ name: 'database',
28
+ message: 'Select database:',
29
+ choices: [
30
+ { name: 'PostgreSQL', value: 'postgresql' },
31
+ { name: 'MySQL', value: 'mysql' },
32
+ { name: 'MongoDB', value: 'mongodb' },
33
+ { name: 'SQLite', value: 'sqlite' },
34
+ ],
35
+ },
36
+ {
37
+ type: 'confirm',
38
+ name: 'includeAuth',
39
+ message: 'Include JWT authentication?',
40
+ default: true,
41
+ },
42
+ {
43
+ type: 'confirm',
44
+ name: 'includeDocker',
45
+ message: 'Include Docker configuration?',
46
+ default: true,
47
+ },
48
+ {
49
+ type: 'list',
50
+ name: 'packageManager',
51
+ message: 'Select package manager:',
52
+ choices: [
53
+ { name: 'npm', value: 'npm' },
54
+ { name: 'pnpm', value: 'pnpm' },
55
+ { name: 'yarn', value: 'yarn' },
56
+ ],
57
+ },
58
+ ]);
59
+
60
+ return answers as ProjectConfig;
61
+ }
62
+
package/src/types.ts ADDED
@@ -0,0 +1,11 @@
1
+ export type DatabaseType = 'postgresql' | 'mysql' | 'mongodb' | 'sqlite';
2
+ export type PackageManager = 'npm' | 'pnpm' | 'yarn';
3
+
4
+ export interface ProjectConfig {
5
+ projectName: string;
6
+ database: DatabaseType;
7
+ includeAuth: boolean;
8
+ includeDocker: boolean;
9
+ packageManager: PackageManager;
10
+ }
11
+
@@ -0,0 +1,6 @@
1
+ export function parseArgs(): string | undefined {
2
+ const args = process.argv.slice(2);
3
+ const projectName = args.find(arg => !arg.startsWith('-'));
4
+ return projectName;
5
+ }
6
+
package/tsconfig.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ES2022",
5
+ "lib": ["ES2022"],
6
+ "moduleResolution": "node",
7
+ "outDir": "./dist",
8
+ "rootDir": "./src",
9
+ "strict": true,
10
+ "esModuleInterop": true,
11
+ "skipLibCheck": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "resolveJsonModule": true,
14
+ "declaration": true,
15
+ "declarationMap": true,
16
+ "sourceMap": true
17
+ },
18
+ "include": ["src/**/*"],
19
+ "exclude": ["node_modules", "dist"]
20
+ }
21
+