Backend API for SortMyHostel application built with Node.js, Express, Prisma, and MongoDB.
- 🍽️ Menu management (day-wise, meal-wise)
- 👍👎 Food feedback system (likes/dislikes)
- 💬 Comments on food items
- 📊 Analytics and reporting
- 🗑️ Food wastage tracking
- 📤 Excel file upload for menu
- 🔐 Admin authentication
- Runtime: Node.js
- Framework: Express.js
- ORM: Prisma
- Database: MongoDB
- Validation: express-validator
- File Upload: Multer
- Security: Helmet, CORS, Rate Limiting
- Node.js 18+ installed
- MongoDB Atlas account (free tier)
- MongoDB connection string
cd backend
npm installCopy .env.example to .env:
cp .env.example .envEdit .env and add your MongoDB connection string:
DATABASE_URL="mongodb+srv://username:[email protected]/sortmyhostel?retryWrites=true&w=majority"
FRONTEND_URL="http://localhost:5173"
JWT_SECRET="your-secret-key"
PORT=3000npm run prisma:generatenpm run prisma:seednpm run devThe API will be available at http://localhost:3000
GET /api/menu/all-days- Get menu for all daysGET /api/menu/day/:day- Get menu for specific dayPOST /api/menu/upload-excel- Upload Excel file to update menuPOST /api/menu/add-item- Add manual menu item
POST /api/feedback/submit- Submit like/dislikePOST /api/feedback/comment- Submit commentDELETE /api/feedback/comment/:commentId- Delete comment (admin)GET /api/feedback/disliked-issues- Get disliked food issues
GET /api/analytics- Get analytics data
GET /api/wastage- Get wastage data (last 7 days)GET /api/wastage/yesterday- Get yesterday's wastagePOST /api/wastage/submit- Submit wastage data (admin)
See DEPLOYMENT.md for detailed deployment instructions.
ISC