Spaces:
Running
Running
File size: 2,578 Bytes
639bb77 b8979b5 639bb77 ffda0ec 639bb77 ffda0ec 5be4180 639bb77 ffda0ec 639bb77 b8979b5 639bb77 5be4180 639bb77 ffda0ec 639bb77 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { ThrottlerModule } from '@nestjs/throttler';
import { APP_GUARD } from '@nestjs/core';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { appConfig, databaseConfig, redisConfig, jwtConfig, agentConfig } from './config';
import { SupabaseModule } from './database';
import { RedisModule } from './redis';
import { AuthModule } from './modules/auth/auth.module';
import { UsersModule } from './modules/users/users.module';
import { SpacesModule } from './modules/spaces/spaces.module';
import { RoomsModule } from './modules/rooms/rooms.module';
import { MembersModule } from './modules/members/members.module';
import { MessagesModule } from './modules/messages/messages.module';
import { DMsModule } from './modules/dms/dms.module';
import { NotificationsModule } from './modules/notifications/notifications.module';
import { FilesModule } from './modules/files/files.module';
import { SearchModule } from './modules/search/search.module';
import { AgentModule } from './modules/agent/agent.module';
import { TaModule } from './modules/ta/ta.module';
import { ChatGatewayModule } from './gateways/chat.gateway.module';
import { JwtAuthGuard } from './common/guards/jwt-auth.guard';
@Module({
imports: [
// Configuration
ConfigModule.forRoot({
isGlobal: true,
load: [appConfig, databaseConfig, redisConfig, jwtConfig, agentConfig],
envFilePath: ['.env.local', '.env'],
}),
// Event Emitter
EventEmitterModule.forRoot(),
// Rate Limiting
ThrottlerModule.forRoot([
{
name: 'short',
ttl: 1000,
limit: 10,
},
{
name: 'medium',
ttl: 10000,
limit: 30,
},
{
name: 'long',
ttl: 60000,
limit: 100,
},
]),
// Database & Cache
SupabaseModule,
RedisModule,
// Feature Modules - Phase 2 & 3 Complete
AuthModule,
UsersModule,
SpacesModule,
RoomsModule,
MembersModule,
MessagesModule,
DMsModule,
NotificationsModule,
FilesModule,
SearchModule,
TaModule,
// Phase 4 - WebSocket & Real-time
ChatGatewayModule,
// Agent/Bot Messaging API
AgentModule,
],
controllers: [AppController],
providers: [
AppService,
// Global JWT Guard
{
provide: APP_GUARD,
useClass: JwtAuthGuard,
},
],
})
export class AppModule {}
|