{ "name": "oudelaa-backend", "version": "1.0.0", "private": true, "description": "Production-ready social media backend with NestJS and MongoDB", "license": "UNLICENSED", "engines": { "node": ">=20 <25" }, "scripts": { "build": "nest build api-gateway && nest build notification-service && tsc -p tsconfig.legacy.json && node scripts/copy-legacy-entry.js", "build:gateway": "nest build api-gateway", "build:notifications": "nest build notification-service", "start": "nest start api-gateway", "start:dev": "nest start api-gateway --watch", "start:notification-service": "nest start notification-service", "start:notification-service:dev": "nest start notification-service --watch", "start:prod": "node dist/main.js", "start:notification-service:prod": "node dist/apps/notification-service/main", "lint": "eslint \"{src,apps,libs}/**/*.ts\"", "lint:fix": "eslint \"{src,apps,libs}/**/*.ts\" --fix", "test": "jest", "test:coverage": "jest --runInBand --coverage && node scripts/check-coverage.js", "test:watch": "jest --watch", "test:e2e": "jest --runInBand --config ./test/jest-e2e.json", "test:perf": "node --test scripts/load-test.test.js", "perf:load": "node scripts/load-test.js", "perf:health": "node scripts/load-test.js --url http://127.0.0.1:4000/api/v1/health --duration 15 --concurrency 20", "perf:health:gate": "node scripts/load-test.js --url http://127.0.0.1:4000/api/v1/health --duration 15 --concurrency 20 --min-success-rate 99.9 --min-rps 1000 --max-p95 100 --max-p99 150", "perf:startup": "node scripts/startup-benchmark.js", "search:sync-indexes": "node scripts/sync-atlas-search-indexes.js" }, "dependencies": { "@aws-sdk/client-s3": "^3.1041.0", "@aws-sdk/lib-storage": "^3.1041.0", "@aws-sdk/s3-request-presigner": "^3.1041.0", "@nestjs/common": "^11.1.28", "@nestjs/config": "^4.0.4", "@nestjs/core": "^11.1.28", "@nestjs/jwt": "^11.0.2", "@nestjs/microservices": "^11.1.28", "@nestjs/mongoose": "^11.0.4", "@nestjs/passport": "^11.0.5", "@nestjs/platform-express": "^11.1.28", "@nestjs/platform-socket.io": "^11.1.28", "@nestjs/swagger": "^11.4.6", "@nestjs/websockets": "^11.1.28", "@socket.io/redis-adapter": "^8.3.0", "@types/passport-google-oauth20": "^2.0.17", "amqp-connection-manager": "^4.1.14", "amqplib": "^0.10.8", "bcrypt": "^6.0.0", "bullmq": "^5.76.5", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "compression": "^1.8.1", "dotenv": "^16.4.5", "google-auth-library": "^10.6.2", "ioredis": "^5.10.1", "joi": "^17.13.3", "mongoose": "^8.6.0", "nodemailer": "^9.0.3", "passport": "^0.7.0", "passport-google-oauth20": "^2.0.0", "passport-jwt": "^4.0.1", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", "socket.io": "^4.8.0" }, "devDependencies": { "@eslint/js": "^9.39.4", "@nestjs/cli": "^11.0.24", "@nestjs/schematics": "^11.1.0", "@nestjs/testing": "^11.1.28", "@types/amqplib": "^0.10.7", "@types/bcrypt": "^5.0.2", "@types/compression": "^1.8.1", "@types/express": "^4.17.21", "@types/jest": "^29.5.12", "@types/node": "^20.16.5", "@types/nodemailer": "^8.0.0", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.2", "eslint": "^9.11.1", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", "globals": "^16.5.0", "jest": "^29.7.0", "prettier": "^3.3.3", "socket.io-client": "^4.8.0", "source-map-support": "^0.5.21", "supertest": "^7.0.0", "ts-jest": "^29.2.5", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "typescript": "^5.6.2", "typescript-eslint": "^8.64.0" } }