Assist_Design/apps/bff/src/app.module.ts

109 lines
3.6 KiB
TypeScript
Raw Normal View History

import { Module } from "@nestjs/common";
import { APP_PIPE } from "@nestjs/core";
import { RouterModule } from "@nestjs/core";
import { ConfigModule } from "@nestjs/config";
import { ScheduleModule } from "@nestjs/schedule";
import { ZodValidationPipe } from "nestjs-zod";
2025-08-21 15:24:40 +09:00
// Configuration
import { appConfig } from "@bff/core/config/app.config.js";
import { apiRoutes } from "@bff/core/config/router.config.js";
// Core Modules
import { LoggingModule } from "@bff/core/logging/logging.module.js";
import { SecurityModule } from "@bff/core/security/security.module.js";
import { RateLimitModule } from "@bff/core/rate-limiting/index.js";
import { PrismaModule } from "@bff/infra/database/prisma.module.js";
import { RedisModule } from "@bff/infra/redis/redis.module.js";
import { CacheModule } from "@bff/infra/cache/cache.module.js";
import { RealtimeModule } from "@bff/infra/realtime/realtime.module.js";
import { QueueModule } from "@bff/infra/queue/queue.module.js";
import { AuditModule } from "@bff/infra/audit/audit.module.js";
import { EmailModule } from "@bff/infra/email/email.module.js";
// External Integration Modules
import { IntegrationsModule } from "@bff/integrations/integrations.module.js";
import { SalesforceEventsModule } from "@bff/integrations/salesforce/events/events.module.js";
// Feature Modules
import { AuthModule } from "@bff/modules/auth/auth.module.js";
import { UsersModule } from "@bff/modules/users/users.module.js";
import { MappingsModule } from "@bff/modules/id-mappings/mappings.module.js";
import { CatalogModule } from "@bff/modules/catalog/catalog.module.js";
import { OrdersModule } from "@bff/modules/orders/orders.module.js";
import { InvoicesModule } from "@bff/modules/invoices/invoices.module.js";
import { SubscriptionsModule } from "@bff/modules/subscriptions/subscriptions.module.js";
import { CurrencyModule } from "@bff/modules/currency/currency.module.js";
import { SupportModule } from "@bff/modules/support/support.module.js";
import { RealtimeApiModule } from "@bff/modules/realtime/realtime.module.js";
import { VerificationModule } from "@bff/modules/verification/verification.module.js";
import { NotificationsModule } from "@bff/modules/notifications/notifications.module.js";
// System Modules
import { HealthModule } from "@bff/modules/health/health.module.js";
/**
* Main application module
*
* Architecture:
* - Core infrastructure modules provide foundational services
* - External integration modules handle third-party services
* - Feature modules implement business logic
* - System modules provide monitoring and health checks
*
* All feature modules are grouped under "/api" prefix via RouterModule
* Health endpoints remain at root level for monitoring tools
*/
@Module({
imports: [
// === CONFIGURATION ===
ConfigModule.forRoot(appConfig),
ScheduleModule.forRoot(),
2025-08-22 17:02:49 +09:00
// === INFRASTRUCTURE ===
2025-08-21 15:24:40 +09:00
LoggingModule,
SecurityModule,
RateLimitModule,
// === CORE SERVICES ===
PrismaModule,
RedisModule,
2025-08-21 15:24:40 +09:00
CacheModule,
RealtimeModule,
QueueModule,
AuditModule,
EmailModule,
// === EXTERNAL INTEGRATIONS ===
IntegrationsModule,
SalesforceEventsModule,
2025-08-22 17:02:49 +09:00
// === FEATURE MODULES ===
AuthModule,
UsersModule,
MappingsModule,
CatalogModule,
OrdersModule,
InvoicesModule,
SubscriptionsModule,
CurrencyModule,
SupportModule,
RealtimeApiModule,
VerificationModule,
NotificationsModule,
// === SYSTEM MODULES ===
HealthModule,
// === ROUTING ===
RouterModule.register(apiRoutes),
],
providers: [
{
provide: APP_PIPE,
useClass: ZodValidationPipe,
},
],
})
export class AppModule {}