Files
backend/src/app.module.ts

98 lines
2.5 KiB
TypeScript
Raw Normal View History

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler';
import { APP_GUARD } from '@nestjs/core';
import { ScheduleModule } from '@nestjs/schedule';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { configuration } from './config';
import { RedisModule } from './common/redis/redis.module';
import { PrismaModule } from './prisma';
import { AuthModule, JwtAuthGuard, RolesGuard } from './auth';
import { UsersModule } from './users';
import { EmailModule } from './email';
import { AgentTypesModule } from './agent-types';
2026-01-11 20:59:12 +05:30
import { AgentsModule } from './agents';
import { UploadModule } from './upload';
2026-01-24 03:33:54 +05:30
import { ProfileFieldsModule } from './profile-fields';
import { ConnectionRequestsModule } from './connection-requests';
import { MessagesModule } from './messages';
import { CmsModule } from './cms';
2026-02-24 22:36:42 +05:30
import { NotificationsModule } from './notifications';
import { TestimonialsModule } from './testimonials';
import { SupportChatModule } from './support-chat';
import { UserReportsModule } from './user-reports';
import { ContactModule } from './contact';
import { StripeModule } from './stripe';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
// Configuration
ConfigModule.forRoot({
isGlobal: true,
load: [configuration],
envFilePath: ['.env.local', '.env'],
}),
// Redis (global)
RedisModule,
// Rate Limiting
ThrottlerModule.forRoot([
{
ttl: 60000, // 60 seconds
limit: 100, // 100 requests per minute
},
]),
// Task Scheduling
ScheduleModule.forRoot(),
// Event Emitter
EventEmitterModule.forRoot(),
// Database
PrismaModule,
// Feature Modules
AuthModule,
UsersModule,
EmailModule,
AgentTypesModule,
2026-01-11 20:59:12 +05:30
AgentsModule,
UploadModule,
2026-01-24 03:33:54 +05:30
ProfileFieldsModule,
ConnectionRequestsModule,
MessagesModule,
CmsModule,
2026-02-24 22:36:42 +05:30
NotificationsModule,
TestimonialsModule,
SupportChatModule,
UserReportsModule,
ContactModule,
StripeModule,
],
controllers: [AppController],
providers: [
AppService,
// Global Rate Limiting Guard
{
provide: APP_GUARD,
useClass: ThrottlerGuard,
},
// Global JWT Auth Guard
{
provide: APP_GUARD,
useClass: JwtAuthGuard,
},
// Global Roles Guard
{
provide: APP_GUARD,
useClass: RolesGuard,
},
],
})
export class AppModule {}