# Modules — NestJS

Source: https://www.geekswithgeeks.com/en/nestjs/nestjs-modules

> Organize controllers, services, and dependencies into cohesive units.

## Define a module

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

```typescript
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.

```typescript
@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).
