{ "name": "@mark-lasfar/portfolio-backend", "version": "1.0.1", "description": "Backend for Ibrahim Al-Asfar's portfolio website, supporting authentication, project management, and AI-powered chat.", "main": "server.js", "scripts": { "start": "node server.js", "build": "echo \"No build step needed for backend\"", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ "portfolio", "backend", "express", "mongodb", "cloudinary", "authentication", "oauth", "ai" ], "author": "Ibrahim Al-Asfar ", "license": "MIT", "homepage": "https://github.com/Mark-Lasfar/portfolio-backend#readme", "repository": { "type": "git", "url": "git+https://github.com/Mark-Lasfar/portfolio-backend.git" }, "bugs": { "url": "https://github.com/Mark-Lasfar/portfolio-backend/issues" }, "dependencies": { "@canva/app-ui-kit": "^4.10.0", "@sentry/node": "^7.120.4", "@sentry/profiling-node": "^10.0.0", "@sentry/tracing": "^7.120.4", "axios": "^1.14.0", "bcryptjs": "^2.4.3", "cloudinary": "^1.41.3", "compression": "^1.8.1", "cookie-parser": "^1.4.7", "cors": "^2.8.6", "csurf": "^1.11.0", "docx": "^9.6.1", "dotenv": "^16.6.1", "ejs": "^5.0.1", "express": "^4.22.1", "express-rate-limit": "^8.3.2", "express-timeout-handler": "^2.2.2", "express-validator": "^7.3.1", "googleapis": "^154.1.0", "helmet": "^8.1.0", "jimp": "^1.6.0", "jsonwebtoken": "^9.0.3", "jspdf": "^3.0.4", "jspdf-autotable": "^5.0.7", "lru-cache": "^11.2.7", "mongoose": "^8.23.0", "morgan": "^1.10.1", "multer": "^1.4.5-lts.1", "multer-storage-cloudinary": "^4.0.0", "node-cron": "^4.2.1", "nodemailer": "^6.10.1", "passport": "^0.7.0", "passport-facebook": "^3.0.0", "passport-github2": "^0.1.12", "passport-google-oauth20": "^2.0.0", "passport-mgzon": "^1.0.2", "passport-oauth2": "^1.8.0", "sharp": "^0.32.6", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", "validator": "^13.12.0", "web-push": "^3.6.7", "winston": "^3.19.0" } }