Robust and scalable backend for the Expense Tracker Web App — powering user authentication, expense management, advisor scheduling, real-time communication, secure payments, and media uploads. Built with TypeScript, Node.js, Express, and MongoDB, following modular and maintainable architecture patterns.
- 🔐 JWT & Google OAuth Authentication
- 👥 Role-based access control (User, Advisor, Admin)
- 📊 Expense tracking & category filtering
- 📅 Advisor slot creation, updates, and booking
- 💬 Real-time chat with Socket.IO
- 📹 Video calls powered by ZegoCloud (frontend integration)
- ☁️ File uploads with Cloudinary & AWS S3 using Multer
- 💳 Stripe Integration for secure payments
- 📩 Email service with Nodemailer
- 📦 Scalable, service-repository architecture
- 🧪 Validation using Joi
- ⚙️ Environment-based configuration for secure dev/prod usage
- Node.js
- Express.js
- TypeScript
- MongoDB + Mongoose
- Joi
- Socket.IO
- Stripe
- ZegoCloud UIKit
- Multer
- Cloudinary
- Nodemailer
- Layered structure: Controller → Service → Repository (Repository architecture)
- Separation of concerns for maintainability & testing
- Node.js ≥ 18
- MongoDB (local or Atlas)
- Cloudinary keys
- Stripe secret key
- Google OAuth client ID & secret
# Clone the repo
git clone https://github.com/DilfaThayyil/ExpenX-server.git
cd ExpenX-server
# Install dependencies
npm install
# Run the server (dev mode with nodemon)
npm run dev