import { NestFactory } from '@nestjs/core'; import { RequestMethod, ValidationPipe } from '@nestjs/common'; import { NestExpressApplication } from '@nestjs/platform-express'; import { AppModule } from './app.module'; import { BigIntSerializerInterceptor } from './common/interceptors/bigint-serializer.interceptor'; import { resolveWebsiteDocsRoot } from './website-docs/website-docs.paths'; async function bootstrap() { const app = await NestFactory.create(AppModule); // Public storefront docs — no /api/v1 prefix, no auth app.setGlobalPrefix('api/v1', { exclude: [ { path: 'docs/website', method: RequestMethod.GET }, { path: 'docs/website/:fileName', method: RequestMethod.GET }, ], }); app.useGlobalPipes( new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true, }), ); app.useGlobalInterceptors(new BigIntSerializerInterceptor()); app.enableCors(); const port = process.env.PORT ?? 3000; await app.listen(port); console.log(`API running on http://localhost:${port}/api/v1`); console.log( `Website API docs: http://localhost:${port}/docs/website (root=${resolveWebsiteDocsRoot()})`, ); } bootstrap();