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.
- package/.github/PUBLISH.md +58 -0
- package/.github/workflows/publish.yml +78 -0
- package/LICENSE +21 -0
- package/README.md +62 -0
- package/dist/createProject.d.ts +2 -0
- package/dist/createProject.d.ts.map +1 -0
- package/dist/createProject.js +70 -0
- package/dist/createProject.js.map +1 -0
- package/dist/generators/cursorRules.d.ts +2 -0
- package/dist/generators/cursorRules.d.ts.map +1 -0
- package/dist/generators/cursorRules.js +35 -0
- package/dist/generators/cursorRules.js.map +1 -0
- package/dist/generators/docker.d.ts +3 -0
- package/dist/generators/docker.d.ts.map +1 -0
- package/dist/generators/docker.js +119 -0
- package/dist/generators/docker.js.map +1 -0
- package/dist/generators/envExample.d.ts +3 -0
- package/dist/generators/envExample.d.ts.map +1 -0
- package/dist/generators/envExample.js +39 -0
- package/dist/generators/envExample.js.map +1 -0
- package/dist/generators/eslint.d.ts +2 -0
- package/dist/generators/eslint.d.ts.map +1 -0
- package/dist/generators/eslint.js +32 -0
- package/dist/generators/eslint.js.map +1 -0
- package/dist/generators/githubActions.d.ts +3 -0
- package/dist/generators/githubActions.d.ts.map +1 -0
- package/dist/generators/githubActions.js +68 -0
- package/dist/generators/githubActions.js.map +1 -0
- package/dist/generators/gitignore.d.ts +2 -0
- package/dist/generators/gitignore.d.ts.map +1 -0
- package/dist/generators/gitignore.js +50 -0
- package/dist/generators/gitignore.js.map +1 -0
- package/dist/generators/index.d.ts +3 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +34 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/jest.d.ts +2 -0
- package/dist/generators/jest.d.ts.map +1 -0
- package/dist/generators/jest.js +23 -0
- package/dist/generators/jest.js.map +1 -0
- package/dist/generators/packageJson.d.ts +3 -0
- package/dist/generators/packageJson.d.ts.map +1 -0
- package/dist/generators/packageJson.js +80 -0
- package/dist/generators/packageJson.js.map +1 -0
- package/dist/generators/prettier.d.ts +2 -0
- package/dist/generators/prettier.d.ts.map +1 -0
- package/dist/generators/prettier.js +14 -0
- package/dist/generators/prettier.js.map +1 -0
- package/dist/generators/prisma.d.ts +3 -0
- package/dist/generators/prisma.d.ts.map +1 -0
- package/dist/generators/prisma.js +55 -0
- package/dist/generators/prisma.js.map +1 -0
- package/dist/generators/sourceFiles.d.ts +3 -0
- package/dist/generators/sourceFiles.d.ts.map +1 -0
- package/dist/generators/sourceFiles.js +767 -0
- package/dist/generators/sourceFiles.js.map +1 -0
- package/dist/generators/tsconfig.d.ts +2 -0
- package/dist/generators/tsconfig.d.ts.map +1 -0
- package/dist/generators/tsconfig.js +32 -0
- package/dist/generators/tsconfig.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +3 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +56 -0
- package/dist/prompts.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/parseArgs.d.ts +2 -0
- package/dist/utils/parseArgs.d.ts.map +1 -0
- package/dist/utils/parseArgs.js +6 -0
- package/dist/utils/parseArgs.js.map +1 -0
- package/package.json +46 -0
- package/src/createProject.ts +86 -0
- package/src/generators/cursorRules.ts +39 -0
- package/src/generators/docker.ts +131 -0
- package/src/generators/envExample.ts +49 -0
- package/src/generators/eslint.ts +38 -0
- package/src/generators/githubActions.ts +79 -0
- package/src/generators/gitignore.ts +52 -0
- package/src/generators/index.ts +45 -0
- package/src/generators/jest.ts +29 -0
- package/src/generators/packageJson.ts +89 -0
- package/src/generators/prettier.ts +22 -0
- package/src/generators/prisma.ts +66 -0
- package/src/generators/sourceFiles.ts +840 -0
- package/src/generators/tsconfig.ts +34 -0
- package/src/index.ts +45 -0
- package/src/prompts.ts +62 -0
- package/src/types.ts +11 -0
- package/src/utils/parseArgs.ts +6 -0
- 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
|
+
|
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
|
+
|