@dhayalesh/create-service 0.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 (70) hide show
  1. package/README.md +11 -0
  2. package/generators/create-service/files/go/go.mod.template +37 -0
  3. package/generators/create-service/files/go/internal/api/grpc/server.go.template +5 -0
  4. package/generators/create-service/files/go/internal/api/http/haealth.go.template +7 -0
  5. package/generators/create-service/files/go/internal/api/http/router.go.template +9 -0
  6. package/generators/create-service/files/go/internal/application/application.go.template +4 -0
  7. package/generators/create-service/files/go/internal/di/wire.go.template +11 -0
  8. package/generators/create-service/files/go/internal/domain/domain.go.template +4 -0
  9. package/generators/create-service/files/go/internal/infrastructure/infrastructure.go.template +3 -0
  10. package/generators/create-service/files/go/main.go.template +16 -0
  11. package/generators/create-service/files/go/pkg/proto/entity.proto.template +0 -0
  12. package/generators/create-service/files/go/project.json.template +21 -0
  13. package/generators/create-service/files/go-simple/go.mod.template +37 -0
  14. package/generators/create-service/files/go-simple/main.go.template +13 -0
  15. package/generators/create-service/files/go-simple/project.json.template +21 -0
  16. package/generators/create-service/files/nestjs/Dockerfile.template +24 -0
  17. package/generators/create-service/files/nestjs/package.json.template +53 -0
  18. package/generators/create-service/files/nestjs/project.json.template +23 -0
  19. package/generators/create-service/files/nestjs/src/app.controller.ts.template +29 -0
  20. package/generators/create-service/files/nestjs/src/app.module.ts.template +13 -0
  21. package/generators/create-service/files/nestjs/src/app.service.ts.template +4 -0
  22. package/generators/create-service/files/nestjs/src/health.controller.ts.template +11 -0
  23. package/generators/create-service/files/nestjs/src/main.ts.template +27 -0
  24. package/generators/create-service/files/nestjs/src/root.controller.ts.template +11 -0
  25. package/generators/create-service/files/nestjs/tsconfig.json.template +22 -0
  26. package/generators/create-service/files/nestjs-clean/Dockerfile.template +32 -0
  27. package/generators/create-service/files/nestjs-clean/package.json.template +70 -0
  28. package/generators/create-service/files/nestjs-clean/project.json.template +23 -0
  29. package/generators/create-service/files/nestjs-clean/src/api/app.controller.ts.template +26 -0
  30. package/generators/create-service/files/nestjs-clean/src/api/app.module.ts.template +11 -0
  31. package/generators/create-service/files/nestjs-clean/src/api/health.controller.ts.template +11 -0
  32. package/generators/create-service/files/nestjs-clean/src/api/root.controller.ts.template +11 -0
  33. package/generators/create-service/files/nestjs-clean/src/application/.gitkeep +0 -0
  34. package/generators/create-service/files/nestjs-clean/src/domain/.gitkeep +0 -0
  35. package/generators/create-service/files/nestjs-clean/src/infrastructure/.gitkeep +0 -0
  36. package/generators/create-service/files/nestjs-clean/src/main.ts.template +27 -0
  37. package/generators/create-service/files/nestjs-clean/tsconfig.json.template +22 -0
  38. package/generators/create-service/files/nextjs/next.config.js.template +8 -0
  39. package/generators/create-service/files/nextjs/package.json.template +27 -0
  40. package/generators/create-service/files/nextjs/project.json.template +37 -0
  41. package/generators/create-service/files/nextjs/src/app/globals.css.template +61 -0
  42. package/generators/create-service/files/nextjs/src/app/layout.tsx.template +21 -0
  43. package/generators/create-service/files/nextjs/src/app/page.tsx.template +16 -0
  44. package/generators/create-service/files/nextjs/tailwind.config.js.template +18 -0
  45. package/generators/create-service/files/nextjs/tsconfig.json.template +28 -0
  46. package/generators/create-service/files/node/package.json.template +12 -0
  47. package/generators/create-service/files/node/project.json.template +24 -0
  48. package/generators/create-service/files/node/src/main.ts.template +1 -0
  49. package/generators/create-service/files/node/tsconfig.json.template +9 -0
  50. package/generators/create-service/files/rust/Cargo.toml.template +7 -0
  51. package/generators/create-service/files/rust/Dockerfile.template +4 -0
  52. package/generators/create-service/files/rust/project.json.template +21 -0
  53. package/generators/create-service/files/rust/src/api/mod.rs.template +0 -0
  54. package/generators/create-service/files/rust/src/application/mod.rs.template +0 -0
  55. package/generators/create-service/files/rust/src/domain/mod.rs.template +0 -0
  56. package/generators/create-service/files/rust/src/infrastructure/mod.rs.template +0 -0
  57. package/generators/create-service/files/rust/src/lib.rs.template +4 -0
  58. package/generators/create-service/files/rust/src/main.rs.template +17 -0
  59. package/generators/create-service/files/rust-simple/Cargo.toml.template +7 -0
  60. package/generators/create-service/files/rust-simple/project.json.template +19 -0
  61. package/generators/create-service/files/rust-simple/src/main.rs.template +17 -0
  62. package/generators/create-service/generator.d.ts +12 -0
  63. package/generators/create-service/generator.d.ts.map +1 -0
  64. package/generators/create-service/generator.js +135 -0
  65. package/generators/create-service/schema.json +62 -0
  66. package/generators.json +9 -0
  67. package/index.d.ts +2 -0
  68. package/index.d.ts.map +1 -0
  69. package/index.js +2 -0
  70. package/package.json +66 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # create-service
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build create-service` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test create-service` to execute the unit tests via [Jest](https://jestjs.io).
@@ -0,0 +1,37 @@
1
+ module "<%= name %>"
2
+
3
+ go 1.25.4
4
+
5
+ require (
6
+ github.com/bytedance/gopkg v0.1.3 // indirect
7
+ github.com/bytedance/sonic v1.14.2 // indirect
8
+ github.com/bytedance/sonic/loader v0.4.0 // indirect
9
+ github.com/cloudwego/base64x v0.1.6 // indirect
10
+ github.com/gabriel-vasile/mimetype v1.4.12 // indirect
11
+ github.com/gin-contrib/sse v1.1.0 // indirect
12
+ github.com/gin-gonic/gin v1.11.0 // indirect
13
+ github.com/go-playground/locales v0.14.1 // indirect
14
+ github.com/go-playground/universal-translator v0.18.1 // indirect
15
+ github.com/go-playground/validator/v10 v10.30.0 // indirect
16
+ github.com/goccy/go-json v0.10.5 // indirect
17
+ github.com/goccy/go-yaml v1.19.1 // indirect
18
+ github.com/json-iterator/go v1.1.12 // indirect
19
+ github.com/klauspost/cpuid/v2 v2.3.0 // indirect
20
+ github.com/leodido/go-urn v1.4.0 // indirect
21
+ github.com/mattn/go-isatty v0.0.20 // indirect
22
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
23
+ github.com/modern-go/reflect2 v1.0.2 // indirect
24
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
25
+ github.com/quic-go/qpack v0.6.0 // indirect
26
+ github.com/quic-go/quic-go v0.58.0 // indirect
27
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
28
+ github.com/ugorji/go/codec v1.3.1 // indirect
29
+ go.uber.org/mock v0.6.0 // indirect
30
+ golang.org/x/arch v0.23.0 // indirect
31
+ golang.org/x/crypto v0.46.0 // indirect
32
+ golang.org/x/mod v0.31.0 // indirect
33
+ golang.org/x/net v0.48.0 // indirect
34
+ golang.org/x/sys v0.39.0 // indirect
35
+ golang.org/x/text v0.32.0 // indirect
36
+ google.golang.org/protobuf v1.36.11 // indirect
37
+ )
@@ -0,0 +1,5 @@
1
+ package grpc
2
+
3
+ func Register() {
4
+ // gRPC services will be registered here.
5
+ }
@@ -0,0 +1,7 @@
1
+ package http
2
+
3
+ import "github.com/gin-gonic/gin"
4
+
5
+ func HealthHandler(c *gin.Context) {
6
+ c.String(200, "OK")
7
+ }
@@ -0,0 +1,9 @@
1
+ package http
2
+
3
+ import "github.com/gin-gonic/gin"
4
+
5
+ func NewRouter() *gin.Engine {
6
+ r := gin.New() // no default middleware
7
+ r.GET("/health", HealthHandler)
8
+ return r
9
+ }
@@ -0,0 +1,4 @@
1
+ package application
2
+
3
+ // Application orchestration lives here.
4
+ // No domain assumptions yet.
@@ -0,0 +1,11 @@
1
+ package di
2
+
3
+ import (
4
+ api "<%= name %>/internal/api/http"
5
+
6
+ "github.com/gin-gonic/gin"
7
+ )
8
+
9
+ func BuildHTTPRouter() *gin.Engine {
10
+ return api.NewRouter()
11
+ }
@@ -0,0 +1,4 @@
1
+ package domain
2
+
3
+ // Domain contracts live here.
4
+ // Intentionally empty.
@@ -0,0 +1,3 @@
1
+ package infrastructure
2
+
3
+ // Infrastructure implementations live here.
@@ -0,0 +1,16 @@
1
+ package main
2
+
3
+ import (
4
+ "log"
5
+
6
+ "<%= name %>/internal/di"
7
+ )
8
+
9
+ func main() {
10
+ router := di.BuildHTTPRouter()
11
+
12
+ log.Println("service started on :8080")
13
+ if err := router.Run(":8080"); err != nil {
14
+ log.Fatal(err)
15
+ }
16
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "<%= name %>",
3
+ "targets": {
4
+ "build": {
5
+ "executor": "nx:run-commands",
6
+ "options": {
7
+ "cwd": "<%= projectRoot %>",
8
+ "command": "go build -o dist/<%= name %>"
9
+ },
10
+ "outputs": ["{workspaceRoot}/<%= projectRoot %>/dist"]
11
+ },
12
+
13
+ "serve": {
14
+ "executor": "nx:run-commands",
15
+ "options": {
16
+ "cwd": "<%= projectRoot %>",
17
+ "command": "go run main.go"
18
+ }
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,37 @@
1
+ module "<%= name %>"
2
+
3
+ go 1.25.4
4
+
5
+ require (
6
+ github.com/bytedance/gopkg v0.1.3 // indirect
7
+ github.com/bytedance/sonic v1.14.2 // indirect
8
+ github.com/bytedance/sonic/loader v0.4.0 // indirect
9
+ github.com/cloudwego/base64x v0.1.6 // indirect
10
+ github.com/gabriel-vasile/mimetype v1.4.12 // indirect
11
+ github.com/gin-contrib/sse v1.1.0 // indirect
12
+ github.com/gin-gonic/gin v1.11.0 // indirect
13
+ github.com/go-playground/locales v0.14.1 // indirect
14
+ github.com/go-playground/universal-translator v0.18.1 // indirect
15
+ github.com/go-playground/validator/v10 v10.30.0 // indirect
16
+ github.com/goccy/go-json v0.10.5 // indirect
17
+ github.com/goccy/go-yaml v1.19.1 // indirect
18
+ github.com/json-iterator/go v1.1.12 // indirect
19
+ github.com/klauspost/cpuid/v2 v2.3.0 // indirect
20
+ github.com/leodido/go-urn v1.4.0 // indirect
21
+ github.com/mattn/go-isatty v0.0.20 // indirect
22
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
23
+ github.com/modern-go/reflect2 v1.0.2 // indirect
24
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
25
+ github.com/quic-go/qpack v0.6.0 // indirect
26
+ github.com/quic-go/quic-go v0.58.0 // indirect
27
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
28
+ github.com/ugorji/go/codec v1.3.1 // indirect
29
+ go.uber.org/mock v0.6.0 // indirect
30
+ golang.org/x/arch v0.23.0 // indirect
31
+ golang.org/x/crypto v0.46.0 // indirect
32
+ golang.org/x/mod v0.31.0 // indirect
33
+ golang.org/x/net v0.48.0 // indirect
34
+ golang.org/x/sys v0.39.0 // indirect
35
+ golang.org/x/text v0.32.0 // indirect
36
+ google.golang.org/protobuf v1.36.11 // indirect
37
+ )
@@ -0,0 +1,13 @@
1
+ package main
2
+
3
+ import "github.com/gin-gonic/gin"
4
+
5
+ func main() {
6
+ router := gin.Default()
7
+ router.GET("/ping", func(c *gin.Context) {
8
+ c.JSON(200, gin.H{
9
+ "message": "pong",
10
+ })
11
+ })
12
+ router.Run() // listens on 0.0.0.0:8080 by default
13
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "<%= name %>",
3
+ "targets": {
4
+ "build": {
5
+ "executor": "nx:run-commands",
6
+ "options": {
7
+ "cwd": "<%= projectRoot %>",
8
+ "command": "go build -o dist/<%= name %>"
9
+ },
10
+ "outputs": ["{workspaceRoot}/<%= projectRoot %>/dist"]
11
+ },
12
+
13
+ "serve": {
14
+ "executor": "nx:run-commands",
15
+ "options": {
16
+ "cwd": "<%= projectRoot %>",
17
+ "command": "go run main.go"
18
+ }
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,24 @@
1
+ # Builder stage
2
+ FROM node:20-alpine AS builder
3
+
4
+ WORKDIR /app
5
+
6
+ COPY package.json pnpm-lock.yaml ./
7
+ RUN npm install -g pnpm && pnpm install --frozen-lockfile
8
+
9
+ COPY . .
10
+
11
+ RUN pnpm run build
12
+
13
+ # Runner stage
14
+ FROM node:20-alpine AS runner
15
+
16
+ WORKDIR /app
17
+
18
+ COPY --from=builder /app/dist/packages/<%= name %> ./dist
19
+ COPY --from=builder /app/node_modules ./node_modules
20
+ COPY --from=builder /app/package.json ./package.json
21
+
22
+ EXPOSE <%= port %>
23
+
24
+ CMD ["node", "dist/src/main"]
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "<%= name %>",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "author": "",
6
+ "private": true,
7
+ "license": "UNLICENSED",
8
+ "scripts": {
9
+ "build": "nest build",
10
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
11
+ "start": "nest start",
12
+ "start:dev": "nest start --watch",
13
+ "start:debug": "nest start --debug --watch",
14
+ "start:prod": "node dist/packages/<%= name %>/src/main",
15
+ "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
16
+ "test": "jest",
17
+ "test:watch": "jest --watch",
18
+ "test:cov": "jest --coverage",
19
+ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
20
+ "test:e2e": "jest --config ./test/jest-e2e.json"
21
+ },
22
+ "dependencies": {
23
+ "@nestjs/common": "^10.0.0",
24
+ "@nestjs/core": "^10.0.0",
25
+ "@nestjs/platform-express": "^10.0.0",
26
+ "@nestjs/swagger": "^7.1.0",
27
+ "reflect-metadata": "^0.1.13",
28
+ "rxjs": "^7.8.1"
29
+ },
30
+ "devDependencies": {
31
+ "@nestjs/cli": "^10.0.0",
32
+ "@nestjs/schematics": "^10.0.0",
33
+ "@nestjs/testing": "^10.0.0",
34
+ "@types/express": "^4.17.17",
35
+ "@types/jest": "^29.5.2",
36
+ "@types/node": "^20.3.1",
37
+ "@types/supertest": "^2.0.12",
38
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
39
+ "@typescript-eslint/parser": "^6.0.0",
40
+ "eslint": "^8.42.0",
41
+ "eslint-config-prettier": "^9.0.0",
42
+ "eslint-plugin-prettier": "^5.0.0",
43
+ "jest": "^29.5.0",
44
+ "prettier": "^3.0.0",
45
+ "source-map-support": "^0.5.21",
46
+ "supertest": "^6.3.3",
47
+ "ts-jest": "^29.1.0",
48
+ "ts-loader": "^9.4.3",
49
+ "ts-node": "^10.9.1",
50
+ "tsconfig-paths": "^4.2.0",
51
+ "typescript": "^5.1.3"
52
+ }
53
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "<%= name %>",
3
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
+ "projectType": "application",
5
+ "sourceRoot": "<%= projectRoot %>/src",
6
+ "targets": {
7
+ "build": {
8
+ "executor": "@nx/js:tsc",
9
+ "options": {
10
+ "outputPath": "dist/<%= name %>",
11
+ "main": "<%= projectRoot %>/src/main.ts",
12
+ "tsConfig": "<%= projectRoot %>/tsconfig.json",
13
+ "assets": ["<%= projectRoot %>/src/assets"]
14
+ }
15
+ },
16
+ "serve": {
17
+ "executor": "@nx/js:node",
18
+ "options": {
19
+ "buildTarget": "<%= name %>:build"
20
+ }
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,29 @@
1
+ import { Controller, Get, Post, Put, Delete } from '@nestjs/common';
2
+ import { AppService } from './app.service';
3
+ import { ApiTags } from '@nestjs/swagger';
4
+
5
+ @ApiTags('<%= name %>')
6
+ @Controller('<%= name %>')
7
+ export class AppController {
8
+ constructor(private readonly appService: AppService) {}
9
+
10
+ @Get()
11
+ getData(): string {
12
+ return '<%= name %> is running on port <%= port %>';
13
+ }
14
+
15
+ @Post()
16
+ createData(): string {
17
+ return '';
18
+ }
19
+
20
+ @Put()
21
+ updateData(): string {
22
+ return '';
23
+ }
24
+
25
+ @Delete()
26
+ deleteData(): string {
27
+ return '';
28
+ }
29
+ }
@@ -0,0 +1,13 @@
1
+ import { Module } from '@nestjs/common';
2
+ import { AppController } from './app.controller';
3
+ import { AppService } from './app.service';
4
+ import { HealthController } from './health.controller';
5
+
6
+ import { RootController } from './root.controller';
7
+
8
+ @Module({
9
+ imports: [],
10
+ controllers: [AppController, HealthController, RootController],
11
+ providers: [AppService],
12
+ })
13
+ export class AppModule {}
@@ -0,0 +1,4 @@
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ @Injectable()
4
+ export class AppService {}
@@ -0,0 +1,11 @@
1
+ import { Controller, Get } from '@nestjs/common';
2
+ import { ApiTags } from '@nestjs/swagger';
3
+
4
+ @ApiTags('health')
5
+ @Controller('health')
6
+ export class HealthController {
7
+ @Get()
8
+ check(): string {
9
+ return 'OK';
10
+ }
11
+ }
@@ -0,0 +1,27 @@
1
+ import { NestFactory } from '@nestjs/core';
2
+ import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
3
+ import { AppModule } from './app.module';
4
+
5
+ async function bootstrap() {
6
+ const app = await NestFactory.create(AppModule);
7
+
8
+ // Set global prefix with versioning, excluding operational endpoints
9
+ app.setGlobalPrefix('v1/api', {
10
+ exclude: ['health', '/'],
11
+ });
12
+
13
+ // Swagger Configuration
14
+ const config = new DocumentBuilder()
15
+ .setTitle('<%= name %>')
16
+ .setDescription('The <%= name %> API description')
17
+ .setVersion('1.0')
18
+ .build();
19
+ const document = SwaggerModule.createDocument(app, config);
20
+
21
+ SwaggerModule.setup('api/docs', app, document);
22
+
23
+ await app.listen(<%= port %>, '0.0.0.0');
24
+ console.log(`Application is running on: http://localhost:<%= port %>`);
25
+ console.log(`Swagger documentation: http://localhost:<%= port %>/api/docs`);
26
+ }
27
+ bootstrap();
@@ -0,0 +1,11 @@
1
+ import { Controller, Get } from '@nestjs/common';
2
+ import { ApiTags } from '@nestjs/swagger';
3
+
4
+ @ApiTags('root')
5
+ @Controller('')
6
+ export class RootController {
7
+ @Get()
8
+ getRoot(): string {
9
+ return '<%= name %> is running on port <%= port %>';
10
+ }
11
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "module": "commonjs",
4
+ "declaration": true,
5
+ "removeComments": true,
6
+ "emitDecoratorMetadata": true,
7
+ "experimentalDecorators": true,
8
+ "allowSyntheticDefaultImports": true,
9
+ "target": "es2021",
10
+ "sourceMap": true,
11
+ "outDir": "../../dist/packages/<%= name %>",
12
+ "baseUrl": "./",
13
+ "incremental": true,
14
+ "skipLibCheck": true,
15
+ "strictNullChecks": false,
16
+ "noImplicitAny": false,
17
+ "strictBindCallApply": false,
18
+ "forceConsistentCasingInFileNames": false,
19
+ "noFallthroughCasesInSwitch": false
20
+ },
21
+ "include": ["src/**/*"]
22
+ }
@@ -0,0 +1,32 @@
1
+ FROM node:20-alpine AS builder
2
+
3
+ WORKDIR /app
4
+
5
+ # Install pnpm
6
+ RUN npm install -g pnpm
7
+
8
+ # Copy files
9
+ COPY package.json pnpm-lock.yaml* pnpm-workspace.yaml ./
10
+ COPY packages/<%= name %> packages/<%= name %>
11
+ COPY tsconfig.base.json ./
12
+ COPY nx.json ./
13
+
14
+ # Install dependencies (frozen-lockfile for consistency)
15
+ RUN pnpm install --frozen-lockfile
16
+
17
+ # Build the project
18
+ RUN pnpm nx build <%= name %>
19
+
20
+ # Production stage
21
+ FROM node:20-alpine
22
+
23
+ WORKDIR /app
24
+
25
+ # Copy built application and node_modules
26
+ COPY --from=builder /app/dist/packages/<%= name %> ./dist
27
+ COPY --from=builder /app/node_modules ./node_modules
28
+ COPY --from=builder /app/packages/<%= name %>/package.json ./package.json
29
+
30
+ EXPOSE <%= port %>
31
+
32
+ CMD ["node", "dist/src/main"]
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "<%= name %>",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "author": "",
6
+ "private": true,
7
+ "license": "UNLICENSED",
8
+ "scripts": {
9
+ "build": "nest build",
10
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
11
+ "start": "nest start",
12
+ "start:dev": "nest start --watch",
13
+ "start:debug": "nest start --debug --watch",
14
+ "start:prod": "node dist/packages/<%= name %>/src/main",
15
+ "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
16
+ "test": "jest",
17
+ "test:watch": "jest --watch",
18
+ "test:cov": "jest --coverage",
19
+ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
20
+ "test:e2e": "jest --config ./test/jest-e2e.json"
21
+ },
22
+ "dependencies": {
23
+ "@nestjs/common": "^10.0.0",
24
+ "@nestjs/core": "^10.0.0",
25
+ "@nestjs/platform-express": "^10.0.0",
26
+ "@nestjs/swagger": "^7.1.0",
27
+ "reflect-metadata": "^0.1.13",
28
+ "rxjs": "^7.8.1"
29
+ },
30
+ "devDependencies": {
31
+ "@nestjs/cli": "^10.0.0",
32
+ "@nestjs/schematics": "^10.0.0",
33
+ "@nestjs/testing": "^10.0.0",
34
+ "@types/express": "^4.17.17",
35
+ "@types/jest": "^29.5.2",
36
+ "@types/node": "^20.3.1",
37
+ "@types/supertest": "^2.0.12",
38
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
39
+ "@typescript-eslint/parser": "^6.0.0",
40
+ "eslint": "^8.42.0",
41
+ "eslint-config-prettier": "^9.0.0",
42
+ "eslint-plugin-prettier": "^5.0.0",
43
+ "jest": "^29.5.0",
44
+ "prettier": "^3.0.0",
45
+ "source-map-support": "^0.5.21",
46
+ "supertest": "^6.3.3",
47
+ "ts-jest": "^29.1.0",
48
+ "ts-loader": "^9.4.3",
49
+ "ts-node": "^10.9.1",
50
+ "tsconfig-paths": "^4.2.0",
51
+ "typescript": "^5.1.3"
52
+ },
53
+ "jest": {
54
+ "moduleFileExtensions": [
55
+ "js",
56
+ "json",
57
+ "ts"
58
+ ],
59
+ "rootDir": "src",
60
+ "testRegex": ".*\\.spec\\.ts$",
61
+ "transform": {
62
+ "^.+\\.(t|j)s$": "ts-jest"
63
+ },
64
+ "collectCoverageFrom": [
65
+ "**/*.(t|j)s"
66
+ ],
67
+ "coverageDirectory": "../coverage",
68
+ "testEnvironment": "node"
69
+ }
70
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "<%= name %>",
3
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
+ "projectType": "application",
5
+ "sourceRoot": "<%= projectRoot %>/src",
6
+ "targets": {
7
+ "build": {
8
+ "executor": "@nx/js:tsc",
9
+ "options": {
10
+ "outputPath": "dist/<%= name %>",
11
+ "main": "<%= projectRoot %>/src/main.ts",
12
+ "tsConfig": "<%= projectRoot %>/tsconfig.json",
13
+ "assets": ["<%= projectRoot %>/src/assets"]
14
+ }
15
+ },
16
+ "serve": {
17
+ "executor": "@nx/js:node",
18
+ "options": {
19
+ "buildTarget": "<%= name %>:build"
20
+ }
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,26 @@
1
+ import { Controller, Get, Post, Put, Delete } from '@nestjs/common';
2
+ import { ApiTags } from '@nestjs/swagger';
3
+
4
+ @ApiTags('<%= name %>')
5
+ @Controller('<%= name %>')
6
+ export class AppController {
7
+ @Get()
8
+ getData(): string {
9
+ return '';
10
+ }
11
+
12
+ @Post()
13
+ createData(): string {
14
+ return '';
15
+ }
16
+
17
+ @Put()
18
+ updateData(): string {
19
+ return '';
20
+ }
21
+
22
+ @Delete()
23
+ deleteData(): string {
24
+ return '';
25
+ }
26
+ }
@@ -0,0 +1,11 @@
1
+ import { Module } from '@nestjs/common';
2
+ import { AppController } from './app.controller';
3
+ import { HealthController } from './health.controller';
4
+ import { RootController } from './root.controller';
5
+
6
+ @Module({
7
+ imports: [],
8
+ controllers: [AppController, HealthController, RootController],
9
+ providers: [],
10
+ })
11
+ export class AppModule {}
@@ -0,0 +1,11 @@
1
+ import { Controller, Get } from '@nestjs/common';
2
+ import { ApiTags } from '@nestjs/swagger';
3
+
4
+ @ApiTags('health')
5
+ @Controller('health')
6
+ export class HealthController {
7
+ @Get()
8
+ checkHealth() {
9
+ return 'OK';
10
+ }
11
+ }
@@ -0,0 +1,11 @@
1
+ import { Controller, Get } from '@nestjs/common';
2
+ import { ApiTags } from '@nestjs/swagger';
3
+
4
+ @ApiTags('root')
5
+ @Controller('')
6
+ export class RootController {
7
+ @Get()
8
+ getRoot(): string {
9
+ return '<%= name %> is running on port <%= port %>';
10
+ }
11
+ }