From b404ddc9a899b85cc8df99e15285bc8a06f782d5 Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Mon, 2 Feb 2026 16:08:14 +0100 Subject: [PATCH] fix(nutriphi): increase body size limit to 50mb for image uploads The NutriPhi bot was failing with 413 "request entity too large" when analyzing images via Base64. Added configurable bodyLimit option to shared-nestjs-setup and set NutriPhi backend to 50mb. Co-Authored-By: Claude Opus 4.5 --- apps/nutriphi/apps/backend/src/main.ts | 1 + packages/shared-nestjs-setup/package.json | 4 +++- packages/shared-nestjs-setup/src/index.ts | 10 +++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/nutriphi/apps/backend/src/main.ts b/apps/nutriphi/apps/backend/src/main.ts index 16553afd8..9834f09cd 100644 --- a/apps/nutriphi/apps/backend/src/main.ts +++ b/apps/nutriphi/apps/backend/src/main.ts @@ -6,4 +6,5 @@ bootstrapApp(AppModule, { serviceName: 'NutriPhi', additionalCorsOrigins: ['http://localhost:5180', 'http://localhost:4323'], excludeFromPrefix: [], // no exclusions + bodyLimit: '50mb', // Large limit for Base64 image uploads }); diff --git a/packages/shared-nestjs-setup/package.json b/packages/shared-nestjs-setup/package.json index 0941bb579..faae82cc8 100644 --- a/packages/shared-nestjs-setup/package.json +++ b/packages/shared-nestjs-setup/package.json @@ -13,10 +13,12 @@ }, "dependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0" + "@nestjs/core": "^10.0.0 || ^11.0.0", + "express": "^4.21.0" }, "devDependencies": { "@manacore/shared-tsconfig": "workspace:*", + "@types/express": "^4.17.21", "@types/node": "^22.10.2", "typescript": "^5.0.0" }, diff --git a/packages/shared-nestjs-setup/src/index.ts b/packages/shared-nestjs-setup/src/index.ts index 922329404..b346181fb 100644 --- a/packages/shared-nestjs-setup/src/index.ts +++ b/packages/shared-nestjs-setup/src/index.ts @@ -5,8 +5,9 @@ * across all backend applications. */ -import { INestApplication, ValidationPipe, Type } from '@nestjs/common'; +import { type INestApplication, ValidationPipe, type Type } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; +import { json, urlencoded } from 'express'; /** * Default CORS origins for local development @@ -36,6 +37,8 @@ export interface BootstrapOptions { excludeFromPrefix?: string[]; /** HTTP methods for CORS (default: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS']) */ corsMethods?: string[]; + /** Body size limit for JSON/urlencoded payloads (default: '100kb'). Use '50mb' for image uploads. */ + bodyLimit?: string; } /** @@ -111,6 +114,11 @@ export async function bootstrapApp( ): Promise { const app = await NestFactory.create(AppModule); + // Configure body size limit (important for services handling image uploads) + const bodyLimit = options.bodyLimit ?? '100kb'; + app.use(json({ limit: bodyLimit })); + app.use(urlencoded({ extended: true, limit: bodyLimit })); + // Configure CORS configureCors(app, { additionalOrigins: options.additionalCorsOrigins,