Files
moraworld/apps/api/src/app.module.ts
T
Lizandro GuarnizoandClaude Sonnet 4.6 db19f3e1ca fix(security): rate limiting, forbidNonWhitelisted, Prisma migrations en startup y CI para GHCR
- ThrottlerGuard global: 20 req/min por IP en todos los endpoints
- forbidNonWhitelisted: true en ValidationPipe
- Dockerfile API: prisma migrate deploy antes de arrancar el proceso
- coolify-compose: depends_on api (service_healthy) en web
- GitHub Actions: build y push de imágenes api/web a GHCR en cada push a main

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 17:06:35 -05:00

53 lines
1.9 KiB
TypeScript

import { Module } from "@nestjs/common";
import { ConfigModule } from "@nestjs/config";
import { ThrottlerModule, ThrottlerGuard } from "@nestjs/throttler";
import { APP_GUARD } from "@nestjs/core";
import { HealthModule } from "./health/health.module";
import { PrismaModule } from "./prisma/prisma.module";
import { CalculatorModule } from "./calculator/calculator.module";
import { TrackingModule } from "./tracking/tracking.module";
import { AuthModule } from "./auth/auth.module";
import { UsersModule } from "./users/users.module";
import { PackagesModule } from "./packages/packages.module";
import { PreAlertsModule } from "./pre-alerts/pre-alerts.module";
import { B2BModule } from "./b2b/b2b.module";
import { StorageModule } from "./storage/storage.module";
import { AuditLogModule } from "./audit-log/audit-log.module";
import { NotificationsModule } from "./notifications/notifications.module";
import { TariffsModule } from "./tariffs/tariffs.module";
import { ProductsModule } from "./products/products.module";
import { WarehousesModule } from "./warehouses/warehouses.module";
import { IntegrationsModule } from "./integrations/integrations.module";
import { PaymentsModule } from "./payments/payments.module";
import { ConsolidationsModule } from "./consolidations/consolidations.module";
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ["../../.env", ".env"],
}),
ThrottlerModule.forRoot([{ ttl: 60000, limit: 20 }]),
PrismaModule,
HealthModule,
CalculatorModule,
TrackingModule,
AuthModule,
UsersModule,
PackagesModule,
PreAlertsModule,
B2BModule,
StorageModule,
AuditLogModule,
NotificationsModule,
TariffsModule,
ProductsModule,
WarehousesModule,
IntegrationsModule,
PaymentsModule,
ConsolidationsModule,
],
providers: [{ provide: APP_GUARD, useClass: ThrottlerGuard }],
})
export class AppModule {}