import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { APP_GUARD } from '@nestjs/core'; import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { PrismaModule } from './prisma/prisma.module'; import { AuthModule } from './auth/auth.module'; import { UsersModule } from './users/users.module'; import { VipsModule } from './vips/vips.module'; import { DriversModule } from './drivers/drivers.module'; import { VehiclesModule } from './vehicles/vehicles.module'; import { EventsModule } from './events/events.module'; import { FlightsModule } from './flights/flights.module'; import { CopilotModule } from './copilot/copilot.module'; import { SignalModule } from './signal/signal.module'; import { SettingsModule } from './settings/settings.module'; import { SeedModule } from './seed/seed.module'; import { GpsModule } from './gps/gps.module'; import { JwtAuthGuard } from './auth/guards/jwt-auth.guard'; @Module({ imports: [ // Load environment variables ConfigModule.forRoot({ isGlobal: true, envFilePath: '.env', }), // Rate limiting: 100 requests per 60 seconds per IP ThrottlerModule.forRoot([{ ttl: 60000, limit: 100, }]), // Core modules PrismaModule, AuthModule, // Feature modules UsersModule, VipsModule, DriversModule, VehiclesModule, EventsModule, FlightsModule, CopilotModule, SignalModule, SettingsModule, SeedModule, GpsModule, ], controllers: [AppController], providers: [ AppService, // Apply JWT auth guard globally (unless @Public() is used) { provide: APP_GUARD, useClass: JwtAuthGuard, }, // Apply rate limiting globally { provide: APP_GUARD, useClass: ThrottlerGuard, }, ], }) export class AppModule {}