Lesson 8 / 33

Modules

Organize controllers, services, and dependencies into cohesive units.

Define a module

@Module() decorator wires up controllers, services, imports, and exports.

import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';

@Module({
  controllers: [UsersController],
  providers: [UsersService],
  exports: [UsersService] // other modules can use this service
})
export class UsersModule {}

Root module (AppModule)

The AppModule is the entry point; it imports all feature modules.

@Module({
  imports: [UsersModule, PostsModule],
  controllers: [AppController],
  providers: [AppService]
})
export class AppModule {}

Lazy-loaded modules

Use forFeature() or async forRootAsync() patterns for dynamic module configuration (e.g., database connections).