Expand My Node.js Backend

Job ID: 39920722

Budget: ₹37,500 – ₹75,000 INR

I have an active Node.js codebase that needs to grow quickly without breaking what’s already working. Your mission is to step in, study the current repository, and roll out new functionality while tightening up loose ends.

What I need you to handle
• Authentication system – extend the existing login/signup flow, add role-based access, and make it production-ready.
• Database interactions – optimise queries, create new schemas where needed, and write clean reusable data-access layers (we use MongoDB and Mongoose).
• Real-time data processing – wire up socket-based updates so connected clients receive instant changes without page refreshes.

How we’ll work
I keep the project on a private Git repo with a clear README and issue board. You’ll branch off, push frequent commits, and open pull requests for review. I expect readable code, descriptive commit messages, and unit tests for any critical logic you touch.

Show me your approach
Send a concise proposal explaining:
1. How you would audit the current project before coding.
2. Libraries, patterns, or tools you plan to introduce (e.g., Passport.js, Socket.IO, Redis, ESLint).
3. A rough timeline for the three feature areas above.

If your plan is practical and your style aligns with ours, we can move quickly into sprint work.

This are the dependencies we might want you to use based on which specific features we will let you work on no more dependencies will be used.

{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon server.js",
"start": "pm2-runtime start server.js --name backend",
"restart": "pm2 restart backend",
"stop": "pm2 stop backend",
"delete": "pm2 delete backend",
"logs": "pm2 logs backend"
},
"keywords": [],
"author": "EL Trade Advertising",
"license": "ISC",
"dependencies": {
"@google-analytics/data": "^5.2.0",
"@paypal/checkout-server-sdk": "^1.0.3",
"@upstash/redis": "^1.35.3",
"axios": "^1.12.2",
"bcryptjs": "^3.0.2",
"bootstrap": "^5.3.8",
"cloudinary": "^2.7.0",
"compression": "^1.8.1",
"connect-redis": "^6.1.3",
"cookie-parser": "^1.4.7",
"cors": "^2.8.5",
"dayjs": "^1.11.18",
"dotenv": "^17.2.2",
"ejs": "^3.1.10",
"express": "^5.1.0",
"express-ejs-layouts": "^2.5.1",
"express-fileupload": "^1.5.2",
"express-flash": "^0.0.2",
"express-rate-limit": "^8.1.0",
"express-session": "^1.18.2",
"express-validator": "^7.2.1",
"form-data": "^4.0.4",
"geoip-lite": "^1.4.10",
"google-trends-api": "^4.9.2",
"helmet": "^8.1.0",
"ioredis": "^5.8.1",
"jquery": "^3.7.1",
"mailgun-js": "^0.22.0",
"mailgun.js": "^12.0.3",
"method-override": "^3.0.0",
"moment": "^2.30.1",
"mongoose": "^8.19.1",
"morgan": "^1.10.1",
"multer": "^2.0.2",
"netmask": "^2.0.2",
"node-cron": "^4.2.1",
"openai": "^6.3.0",
"owl.carousel": "^2.3.4",
"pm2": "^6.0.9",
"qrcode": "^1.5.4",
"redis": "^5.8.2",
"sharp": "^0.34.4",
"sitemap": "^8.0.0",
"slugify": "^1.6.6",
"socket.io": "^4.8.1",
"streamifier": "^0.1.1",
"toastify-js": "^1.12.0"
},
"devDependencies": {
"nodemon": "^3.1.10"
}
}