@codeenthusiast09/create-express-app 1.0.5 → 1.0.7
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/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +19 -21
- package/dist/generator.js.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +0 -9
- package/dist/installer.js.map +1 -1
- package/package.json +3 -3
- package/templates/boilerplate/src/common/middleware/error.middleware.ts +2 -4
- package/templates/boilerplate/src/common/utils/logger.ts +5 -0
- package/templates/boilerplate/src/config/env.ts +1 -9
- package/templates/boilerplate/src/config/index.ts +3 -1
- package/templates/boilerplate/src/database/drizzle.connection.ts +2 -2
- package/templates/boilerplate/src/database/mongoose.connection.ts +3 -3
- package/templates/boilerplate/src/database/prisma.connection.ts +2 -2
- package/templates/boilerplate/src/modules/users/dto/create-user.dto.ts +10 -0
- package/templates/boilerplate/src/modules/users/users.controller.ts +18 -0
- package/templates/boilerplate/src/modules/users/users.router.ts +12 -0
- package/templates/boilerplate/src/modules/users/users.service.ts +18 -0
- package/templates/boilerplate/src/server.ts +13 -20
- package/templates/boilerplate/DEPENDENCIES.md +0 -43
- /package/bin/{cli.cjs → cli.js} +0 -0
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;GAIG;AAEH,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM;IAOrD;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B;;;;OAIG;YACW,YAAY;IAU1B;;;;;;;OAOG;IACH;;OAEG;YACW,iBAAiB;IAiD/B;;OAEG;YACW,oBAAoB;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;GAIG;AAEH,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM;IAOrD;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B;;;;OAIG;YACW,YAAY;IAU1B;;;;;;;OAOG;IACH;;OAEG;YACW,iBAAiB;IAiD/B;;OAEG;YACW,oBAAoB;IA8BlC;;;;OAIG;YACW,iBAAiB;IAwB/B;;;;OAIG;YACW,iBAAiB;IAM/B;;;;OAIG;YACW,aAAa;CAG5B"}
|
package/dist/generator.js
CHANGED
|
@@ -104,28 +104,26 @@ class Generator {
|
|
|
104
104
|
const prismaDir = path_1.default.join(this.targetPath, "prisma");
|
|
105
105
|
const schemaPath = path_1.default.join(prismaDir, "schema.prisma");
|
|
106
106
|
const schemaContent = `// This is your Prisma schema file
|
|
107
|
-
|
|
107
|
+
// Learn more: https://pris.ly/d/prisma-schema
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
generator client {
|
|
110
|
+
provider = "prisma-client-js"
|
|
111
|
+
}
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
datasource db {
|
|
114
|
+
provider = "postgresql"
|
|
115
|
+
url = env("DATABASE_URL")
|
|
116
|
+
}
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
// }
|
|
128
|
-
`;
|
|
118
|
+
// model User {
|
|
119
|
+
// id String @id @default(uuid())
|
|
120
|
+
// email String @unique
|
|
121
|
+
// name String?
|
|
122
|
+
// password String
|
|
123
|
+
// createdAt DateTime @default(now())
|
|
124
|
+
// updatedAt DateTime @updatedAt
|
|
125
|
+
// }
|
|
126
|
+
`;
|
|
129
127
|
await fs_extra_1.default.ensureDir(prismaDir);
|
|
130
128
|
await fs_extra_1.default.writeFile(schemaPath, schemaContent);
|
|
131
129
|
}
|
|
@@ -148,8 +146,8 @@ class Generator {
|
|
|
148
146
|
packageJson.scripts["db:studio"] = "prisma studio";
|
|
149
147
|
}
|
|
150
148
|
else if (this.config.orm === "drizzle") {
|
|
151
|
-
packageJson.scripts["db:push"] = "drizzle-kit push
|
|
152
|
-
packageJson.scripts["db:generate"] = "drizzle-kit generate
|
|
149
|
+
packageJson.scripts["db:push"] = "drizzle-kit push";
|
|
150
|
+
packageJson.scripts["db:generate"] = "drizzle-kit generate";
|
|
153
151
|
packageJson.scripts["db:studio"] = "drizzle-kit studio";
|
|
154
152
|
}
|
|
155
153
|
}
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
|
10
10
|
const prompts_1 = require("./prompts");
|
|
11
11
|
const generator_1 = require("./generator");
|
|
12
12
|
const installer_1 = require("./installer");
|
|
13
|
+
const package_json_1 = require("../package.json");
|
|
13
14
|
/**
|
|
14
15
|
* Main CLI Entry Point
|
|
15
16
|
*
|
|
@@ -25,7 +26,7 @@ const program = new commander_1.Command();
|
|
|
25
26
|
program
|
|
26
27
|
.name("create-express-app")
|
|
27
28
|
.description("Generate a production-ready Express TypeScript project")
|
|
28
|
-
.version(
|
|
29
|
+
.version(package_json_1.version)
|
|
29
30
|
.argument("[project-name]", "Name of the project")
|
|
30
31
|
.action(async (projectName) => {
|
|
31
32
|
try {
|
|
@@ -94,8 +95,8 @@ function showSuccessMessage(config) {
|
|
|
94
95
|
console.log(chalk_1.default.gray(" # Run this to create your database tables"));
|
|
95
96
|
}
|
|
96
97
|
else if (config.orm === "drizzle") {
|
|
97
|
-
console.log(chalk_1.default.white(" npx drizzle-kit generate
|
|
98
|
-
console.log(chalk_1.default.white(" npx drizzle-kit push
|
|
98
|
+
console.log(chalk_1.default.white(" npx drizzle-kit generate"));
|
|
99
|
+
console.log(chalk_1.default.white(" npx drizzle-kit push"));
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
console.log();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,gDAAwB;AACxB,wDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,gDAAwB;AACxB,wDAA0B;AAC1B,uCAAsD;AACtD,2CAAwC;AACxC,2CAAwC;AACxC,kDAA0C;AAE1C;;;;;;;;;;GAUG;AAEH,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,oBAAoB,CAAC;KAC1B,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,sBAAO,CAAC;KAChB,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,WAAoB,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,uBAAuB;QACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAU,EAAC,WAAW,CAAC,CAAC;QAE7C,2BAA2B;QAC3B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEhE,oCAAoC;QACpC,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,WAAW,mBAAmB,CAAC,CACjE,CAAC;YACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAExD,0BAA0B;QAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,SAAS,CAAC,mBAAmB,EAAE,CAAC;QAEtC,oBAAoB;QACpB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAE1B,0BAA0B;QAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,MAAqB;IAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,iCAAiC;IACjC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACzE,CAAC;aAAM,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/installer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;GAMG;AAEH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM;IAKtD;;;;;OAKG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB1C;;OAEG;YACW,2BAA2B;IAqCzC;;;;OAIG;YACW,mBAAmB;IAkBjC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;GAMG;AAEH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM;IAKtD;;;;;OAKG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB1C;;OAEG;YACW,2BAA2B;IAqCzC;;;;OAIG;YACW,mBAAmB;IAkBjC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAiC/B"}
|
package/dist/installer.js
CHANGED
|
@@ -114,15 +114,6 @@ class Installer {
|
|
|
114
114
|
cwd: this.projectPath,
|
|
115
115
|
stdio: "pipe",
|
|
116
116
|
});
|
|
117
|
-
// Configure git user (for the initial commit)
|
|
118
|
-
await (0, execa_1.default)("git", ["config", "user.email", "user@example.com"], {
|
|
119
|
-
cwd: this.projectPath,
|
|
120
|
-
stdio: "pipe",
|
|
121
|
-
});
|
|
122
|
-
await (0, execa_1.default)("git", ["config", "user.name", "User"], {
|
|
123
|
-
cwd: this.projectPath,
|
|
124
|
-
stdio: "pipe",
|
|
125
|
-
});
|
|
126
117
|
// Add all files
|
|
127
118
|
await (0, execa_1.default)("git", ["add", "."], {
|
|
128
119
|
cwd: this.projectPath,
|
package/dist/installer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codeenthusiast09/create-express-app",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "CLI tool to generate production-ready Express TypeScript projects with flexible database options (MongoDB, PostgreSQL with Prisma or Drizzle)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
|
-
"create-express-app": "
|
|
7
|
+
"create-express-app": "bin/cli.js"
|
|
8
8
|
},
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/CodeEnthusiast09/create-express-app"
|
|
11
|
+
"url": "git+https://github.com/CodeEnthusiast09/create-express-app.git"
|
|
12
12
|
},
|
|
13
13
|
"bugs": {
|
|
14
14
|
"url": "https://github.com/CodeEnthusiast09/create-express-app/issues"
|
|
@@ -128,10 +128,8 @@ export const errorHandler = (
|
|
|
128
128
|
*/
|
|
129
129
|
export const asyncHandler = <
|
|
130
130
|
P = ParamsDictionary,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
134
|
-
ReqBody = any,
|
|
131
|
+
ResBody = unknown,
|
|
132
|
+
ReqBody = unknown,
|
|
135
133
|
ReqQuery = ParsedQs,
|
|
136
134
|
>(
|
|
137
135
|
fn: (
|
|
@@ -12,6 +12,11 @@ import { config } from '@/config';
|
|
|
12
12
|
export const logger = pino({
|
|
13
13
|
level: config.logging.level,
|
|
14
14
|
|
|
15
|
+
serializers: {
|
|
16
|
+
err: pino.stdSerializers.err,
|
|
17
|
+
error: pino.stdSerializers.err,
|
|
18
|
+
},
|
|
19
|
+
|
|
15
20
|
// Pretty print in development, JSON in production
|
|
16
21
|
transport:
|
|
17
22
|
config.nodeEnv === 'development'
|
|
@@ -11,14 +11,6 @@ import path from 'path';
|
|
|
11
11
|
// Load .env from project root
|
|
12
12
|
dotenv.config({ path: path.resolve(__dirname, '../../.env') });
|
|
13
13
|
|
|
14
|
-
// Validate required environment variables
|
|
15
|
-
const requiredEnvVars = ['DATABASE_URL', 'JWT_SECRET'];
|
|
16
|
-
|
|
17
|
-
for (const envVar of requiredEnvVars) {
|
|
18
|
-
if (!process.env[envVar]) {
|
|
19
|
-
throw new Error(`Missing required environment variable: ${envVar}`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
14
|
// Export nothing - this file is just for side effects
|
|
15
|
+
// Validation is handled by Zod in config/index.ts with clear error messages
|
|
24
16
|
export {};
|
|
@@ -53,7 +53,9 @@ const parseConfig = () => {
|
|
|
53
53
|
},
|
|
54
54
|
cors: {
|
|
55
55
|
origin: process.env.CORS_ORIGIN || '*',
|
|
56
|
-
credentials: process.env.CORS_CREDENTIALS
|
|
56
|
+
credentials: process.env.CORS_CREDENTIALS !== undefined
|
|
57
|
+
? process.env.CORS_CREDENTIALS === 'true'
|
|
58
|
+
: true,
|
|
57
59
|
},
|
|
58
60
|
logging: {
|
|
59
61
|
level: (process.env.LOG_LEVEL || 'info') as 'info',
|
|
@@ -25,7 +25,7 @@ export const connectDatabase = async (): Promise<void> => {
|
|
|
25
25
|
await pool.query('SELECT NOW()');
|
|
26
26
|
logger.info(' PostgreSQL connected successfully (Drizzle)');
|
|
27
27
|
} catch (error) {
|
|
28
|
-
logger.error('
|
|
28
|
+
logger.error({ err: error }, ' PostgreSQL connection error');
|
|
29
29
|
process.exit(1);
|
|
30
30
|
}
|
|
31
31
|
};
|
|
@@ -35,7 +35,7 @@ export const disconnectDatabase = async (): Promise<void> => {
|
|
|
35
35
|
await pool.end();
|
|
36
36
|
logger.info(' PostgreSQL disconnected');
|
|
37
37
|
} catch (error) {
|
|
38
|
-
logger.error(' Error disconnecting from PostgreSQL
|
|
38
|
+
logger.error({ err: error }, ' Error disconnecting from PostgreSQL');
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
|
|
@@ -25,7 +25,7 @@ export const connectDatabase = async (): Promise<void> => {
|
|
|
25
25
|
|
|
26
26
|
return;
|
|
27
27
|
} catch (error) {
|
|
28
|
-
logger.error(` MongoDB connection attempt ${attempt}/${MAX_RETRIES} failed
|
|
28
|
+
logger.error({ err: error }, ` MongoDB connection attempt ${attempt}/${MAX_RETRIES} failed`);
|
|
29
29
|
|
|
30
30
|
if (attempt < MAX_RETRIES) {
|
|
31
31
|
logger.info(` Retrying in ${RETRY_DELAY}ms...`);
|
|
@@ -45,7 +45,7 @@ export const disconnectDatabase = async (): Promise<void> => {
|
|
|
45
45
|
await mongoose.disconnect();
|
|
46
46
|
logger.info(' MongoDB disconnected');
|
|
47
47
|
} catch (error) {
|
|
48
|
-
logger.error(' Error disconnecting from MongoDB
|
|
48
|
+
logger.error({ err: error }, ' Error disconnecting from MongoDB');
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
|
|
@@ -59,5 +59,5 @@ mongoose.connection.on('disconnected', () => {
|
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
mongoose.connection.on('error', (error) => {
|
|
62
|
-
logger.error(' MongoDB connection error
|
|
62
|
+
logger.error({ err: error }, ' MongoDB connection error');
|
|
63
63
|
});
|
|
@@ -25,7 +25,7 @@ export const connectDatabase = async (): Promise<void> => {
|
|
|
25
25
|
await prisma.$connect();
|
|
26
26
|
logger.info(' PostgreSQL connected successfully (Prisma)');
|
|
27
27
|
} catch (error) {
|
|
28
|
-
logger.error(' PostgreSQL connection error
|
|
28
|
+
logger.error({ err: error }, ' PostgreSQL connection error');
|
|
29
29
|
process.exit(1);
|
|
30
30
|
}
|
|
31
31
|
};
|
|
@@ -35,7 +35,7 @@ export const disconnectDatabase = async (): Promise<void> => {
|
|
|
35
35
|
await prisma.$disconnect();
|
|
36
36
|
logger.info(' PostgreSQL disconnected');
|
|
37
37
|
} catch (error) {
|
|
38
|
-
logger.error(' Error disconnecting from PostgreSQL
|
|
38
|
+
logger.error({ err: error }, ' Error disconnecting from PostgreSQL');
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// src/modules/users/dto/create-user.dto.ts
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
export const createUserSchema = z.object({
|
|
5
|
+
name: z.string().min(1),
|
|
6
|
+
email: z.string().email(),
|
|
7
|
+
password: z.string().min(8),
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export type CreateUserDto = z.infer<typeof createUserSchema>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/modules/users/users.controller.ts
|
|
2
|
+
import { Request, Response } from 'express';
|
|
3
|
+
import { ResponseHelper } from '@/common/utils/response-helper';
|
|
4
|
+
import { UsersService } from './users.service';
|
|
5
|
+
|
|
6
|
+
export class UsersController {
|
|
7
|
+
private service = new UsersService();
|
|
8
|
+
|
|
9
|
+
findAll = async (_req: Request, res: Response): Promise<void> => {
|
|
10
|
+
const users = await this.service.findAll();
|
|
11
|
+
ResponseHelper.success(res, users);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
findOne = async (req: Request<{ id: string }>, res: Response): Promise<void> => {
|
|
15
|
+
const user = await this.service.findOne(req.params.id);
|
|
16
|
+
ResponseHelper.success(res, user);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// src/modules/users/users.router.ts
|
|
2
|
+
import { Router } from 'express';
|
|
3
|
+
import { asyncHandler } from '@/common/middleware/error.middleware';
|
|
4
|
+
import { UsersController } from './users.controller';
|
|
5
|
+
|
|
6
|
+
const router = Router();
|
|
7
|
+
const controller = new UsersController();
|
|
8
|
+
|
|
9
|
+
router.get('/', asyncHandler(controller.findAll));
|
|
10
|
+
router.get('/:id', asyncHandler<{ id: string }>(controller.findOne));
|
|
11
|
+
|
|
12
|
+
export default router;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/modules/users/users.service.ts
|
|
2
|
+
import { AppError } from '@/common/middleware/error.middleware';
|
|
3
|
+
|
|
4
|
+
type User = { id: string; name: string; email: string };
|
|
5
|
+
|
|
6
|
+
const MOCK_USERS: User[] = [{ id: '1', name: 'Alice', email: 'alice@example.com' }];
|
|
7
|
+
|
|
8
|
+
export class UsersService {
|
|
9
|
+
async findAll(): Promise<User[]> {
|
|
10
|
+
return MOCK_USERS;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async findOne(id: string): Promise<User> {
|
|
14
|
+
const user = MOCK_USERS.find((u) => u.id === id);
|
|
15
|
+
if (!user) throw new AppError('User not found', 404);
|
|
16
|
+
return user;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -3,11 +3,12 @@ import express, { Application } from 'express';
|
|
|
3
3
|
import cors from 'cors';
|
|
4
4
|
import helmet from 'helmet';
|
|
5
5
|
import compression from 'compression';
|
|
6
|
-
|
|
6
|
+
import rateLimit from 'express-rate-limit';
|
|
7
7
|
import { logger } from './common/utils/logger';
|
|
8
8
|
import { httpLogger } from './common/utils/http-logger';
|
|
9
9
|
import { errorHandler, notFoundHandler } from './common/middleware/error.middleware';
|
|
10
10
|
import { connectDatabase, disconnectDatabase } from './database';
|
|
11
|
+
import usersRouter from './modules/users/users.router';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Express Application Setup
|
|
@@ -28,19 +29,15 @@ app.use(
|
|
|
28
29
|
/**
|
|
29
30
|
* Performance Middleware
|
|
30
31
|
*/
|
|
31
|
-
app.use(compression());
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// message: 'Too many requests from this IP, please try again later.',
|
|
41
|
-
// standardHeaders: true, // Return rate limit info in `RateLimit-*` headers
|
|
42
|
-
// legacyHeaders: false, // Disable `X-RateLimit-*` headers
|
|
43
|
-
// });
|
|
32
|
+
app.use(compression());
|
|
33
|
+
|
|
34
|
+
const limiter = rateLimit({
|
|
35
|
+
windowMs: 15 * 60 * 1000,
|
|
36
|
+
max: 100,
|
|
37
|
+
message: 'Too many requests from this IP, please try again later.',
|
|
38
|
+
standardHeaders: true,
|
|
39
|
+
legacyHeaders: false,
|
|
40
|
+
});
|
|
44
41
|
|
|
45
42
|
/**
|
|
46
43
|
* Body Parsing Middleware
|
|
@@ -77,13 +74,9 @@ app.get('/', (_req, res) => {
|
|
|
77
74
|
});
|
|
78
75
|
|
|
79
76
|
/**
|
|
80
|
-
* API Routes
|
|
81
|
-
*
|
|
82
|
-
* Apply rate limiting to all API routes
|
|
83
|
-
* Add your routes here:
|
|
84
|
-
* app.use('/api/users', limiter, userRoutes);
|
|
85
|
-
* app.use('/api/posts', limiter, postRoutes);
|
|
77
|
+
* API Routes — apply limiter to every route
|
|
86
78
|
*/
|
|
79
|
+
app.use('/api/users', limiter, usersRouter);
|
|
87
80
|
|
|
88
81
|
/**
|
|
89
82
|
* Error Handling (must be last)
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Database Dependencies
|
|
2
|
-
|
|
3
|
-
This boilerplate supports three database options. The CLI will automatically install the correct dependencies based on your choice.
|
|
4
|
-
|
|
5
|
-
## MongoDB with Mongoose (Default)
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install mongoose
|
|
9
|
-
npm install -D @types/mongoose
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## PostgreSQL with Prisma
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
npm install @prisma/client
|
|
16
|
-
npm install -D prisma
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
After installation, run:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
npx prisma init
|
|
23
|
-
npx prisma migrate dev
|
|
24
|
-
npx prisma generate
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## PostgreSQL with Drizzle
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
npm install drizzle-orm pg
|
|
31
|
-
npm install -D drizzle-kit @types/pg
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
After installation, run:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npx drizzle-kit generate:pg
|
|
38
|
-
npx drizzle-kit push:pg
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
**Note:** The CLI tool will handle all of this automatically during project setup.
|
/package/bin/{cli.cjs → cli.js}
RENAMED
|
File without changes
|