import { NestFactory } from '@nestjs/core'; import { Logger, ValidationPipe } from '@nestjs/common'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; import { AppModule } from './app.module'; import { UnknownCorpSlugFilter } from './common/unknown-corp-slug.filter'; async function bootstrap() { const logger = new Logger('ApiService'); const app = await NestFactory.create(AppModule); app.useGlobalFilters(new UnknownCorpSlugFilter()); app.useGlobalPipes( new ValidationPipe({ whitelist: true, transform: true, transformOptions: { enableImplicitConversion: true }, }), ); app.enableCors({ origin: process.env.CORS_ORIGIN ?? '*', credentials: true, }); const config = new DocumentBuilder() .setTitle('Analytics API') .setDescription('Query API for analytics data - trends, funnels, cohorts, revenue') .setVersion('1.0') .addBearerAuth() .build(); const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup('docs', app, document); const port = process.env.PORT ?? 3003; await app.listen(port); logger.log(`Analytics API service running on port ${port}`); logger.log(`Swagger docs available at http://localhost:${port}/docs`); } bootstrap();