Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
40 prioritized NestJS best practices across architecture, DI, security, performance, testing, and microservices.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
rules/arch-feature-modules.md
1---2title: Organize by Feature Modules3impact: CRITICAL4impactDescription: "3-5x faster onboarding and development"5tags: architecture, modules, organization6---78## Organize by Feature Modules910Organize your application into feature modules that encapsulate related functionality. Each feature module should be self-contained with its own controllers, services, entities, and DTOs. Avoid organizing by technical layer (all controllers together, all services together). This enables 3-5x faster onboarding and feature development.1112**Incorrect (technical layer organization):**1314```typescript15// Technical layer organization (anti-pattern)16src/17├── controllers/18│ ├── users.controller.ts19│ ├── orders.controller.ts20│ └── products.controller.ts21├── services/22│ ├── users.service.ts23│ ├── orders.service.ts24│ └── products.service.ts25├── entities/26│ ├── user.entity.ts27│ ├── order.entity.ts28│ └── product.entity.ts29└── app.module.ts // Imports everything directly30```3132**Correct (feature module organization):**3334```typescript35// Feature module organization36src/37├── users/38│ ├── dto/39│ │ ├── create-user.dto.ts40│ │ └── update-user.dto.ts41│ ├── entities/42│ │ └── user.entity.ts43│ ├── users.controller.ts44│ ├── users.service.ts45│ ├── users.repository.ts46│ └── users.module.ts47├── orders/48│ ├── dto/49│ ├── entities/50│ ├── orders.controller.ts51│ ├── orders.service.ts52│ └── orders.module.ts53├── shared/54│ ├── guards/55│ ├── interceptors/56│ ├── filters/57│ └── shared.module.ts58└── app.module.ts5960// users.module.ts61@Module({62imports: [TypeOrmModule.forFeature([User])],63controllers: [UsersController],64providers: [UsersService, UsersRepository],65exports: [UsersService], // Only export what others need66})67export class UsersModule {}6869// app.module.ts70@Module({71imports: [72ConfigModule.forRoot(),73TypeOrmModule.forRoot(),74UsersModule,75OrdersModule,76SharedModule,77],78})79export class AppModule {}80```8182Reference: [NestJS Modules](https://docs.nestjs.com/modules)83