Files
lcbp3/.agents/workflows/create-backend-module.md
admin ad77a2ae94
Some checks failed
Build and Deploy / deploy (push) Failing after 1m32s
260304:1233 20260304:1200 update app to lcbp3
2026-03-04 12:33:22 +07:00

1.9 KiB

description
description
Create a new NestJS backend feature module following project standards

Create NestJS Backend Module

Use this workflow when creating a new feature module in backend/src/modules/. Follows specs/05-Engineering-Guidelines/05-02-backend-guidelines.md and ADR-005.

Steps

// turbo

  1. Verify requirements exist — confirm the feature is in specs/01-Requirements/ before starting

// turbo 2. Check schema — read specs/03-Data-and-Storage/lcbp3-v1.7.0-schema.sql for relevant tables

  1. Scaffold module folder
backend/src/modules/<module-name>/
├── <module-name>.module.ts
├── <module-name>.controller.ts
├── <module-name>.service.ts
├── dto/
│   ├── create-<module-name>.dto.ts
│   └── update-<module-name>.dto.ts
├── entities/
│   └── <module-name>.entity.ts
└── <module-name>.controller.spec.ts
  1. Create Entity — map ONLY columns defined in the schema SQL. Use TypeORM decorators. Add @VersionColumn() if the entity needs optimistic locking.

  2. Create DTOs — use class-validator decorators. Never use any. Validate all inputs.

  3. Create Service — inject repository via constructor DI. Use transactions for multi-step writes. Add Idempotency-Key guard for POST/PUT/PATCH operations.

  4. Create Controller — apply @UseGuards(JwtAuthGuard, CaslAbilityGuard). Use proper HTTP status codes. Document with @ApiTags and @ApiOperation.

  5. Register in Module — add to imports, providers, controllers, exports as needed.

  6. Register in AppModule — import the new module in app.module.ts.

// turbo 10. Write unit test — cover service methods with Jest mocks. Run:

pnpm test:watch

// turbo 11. Citation — confirm implementation references specs/01-Requirements/ and specs/05-Engineering-Guidelines/05-02-backend-guidelines.md