/opt/mawid/apps/api/src
NameSizeModeActions
agent/-0755rm
appointments/-0755rm
auth/-0755rm
clinic/-0755rm
common/-0755rm
config/-0755rm
conversations/-0755rm
health/-0755rm
patients/-0755rm
prisma/-0755rm
reminders/-0755rm
services/-0755rm
staff/-0755rm
summary/-0755rm
tenancy/-0755rm
waitlist/-0755rm
whatsapp/-0755rm
app.module.ts23170644editdlrm
main.ts12860644editdlrm
Edit: /opt/mawid/apps/api/src/main.ts (1286B)
import { HttpAdapterHost, NestFactory } from '@nestjs/core'; import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'; import * as Sentry from '@sentry/node'; import { Logger } from 'nestjs-pino'; import { AppModule } from './app.module'; import { SentryExceptionFilter } from './common/sentry.filter'; async function bootstrap() { if (process.env.SENTRY_DSN) { Sentry.init({ dsn: process.env.SENTRY_DSN, environment: process.env.NODE_ENV ?? 'development', }); } // rawBody is required to validate Meta's X-Hub-Signature-256 webhook signatures. const app = await NestFactory.create(AppModule, new FastifyAdapter(), { rawBody: true, bufferLogs: true, }); app.useLogger(app.get(Logger)); app.useGlobalFilters(new SentryExceptionFilter(app.get(HttpAdapterHost).httpAdapter)); // @fastify/cors only allows GET/HEAD/POST by default — list everything the // dashboard uses so PATCH (status changes, settings) and DELETE preflight. app.enableCors({ origin: process.env.DASHBOARD_BASE_URL ?? true, methods: ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE'], }); const port = Number(process.env.API_PORT ?? 3001); await app.listen({ port, host: '0.0.0.0' }); } void bootstrap();