server / package.json
ibrahimlasfar's picture
Add Node.js portfolio API with Docker
172f873
{
"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 <admin@elasfar.com>",
"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"
}
}