A full-stack backend system for managing interview scheduling with role-based access control (RBAC), availability management, and secure booking system.
🔐 Built with Node.js, Express, MongoDB, JWT Authentication, and Role-Based Access Control.
- Node.js
- Express.js
- MongoDB (Mongoose ODM)
- JWT Authentication
- Bcrypt (Password Hashing)
- Joi (Input Validation)
- Role-Based Access Control (RBAC)
- RESTful API design
- Secure Signup & Login using JWT
- Password hashing using Bcrypt
- Admin
- Interviewer
- Candidate
- Permission-based access control for sensitive endpoints
- Create interview slots with date & time range
- Prevent overlapping slots (optional)
- Manage slot status:
available,booked,cancelled,completed
- Candidates can book available slots
- Prevents double-booking using atomic operations
- Daily booking limit per interviewer (3 slots/day)
- Booking cancellation restores availability
- View personal bookings (Candidates & Interviewers)
- Admin can view all bookings
- Robust input validation using Joi to prevent invalid data
/config -> MongoDB connection setup
/controller -> Business logic for auth, availability, booking
/models -> Mongoose schemas for User, Availability, Booking
/routes -> API routes with proper middleware
/middleware -> JWT auth & RBAC permission middlewares
.env -> Environment variables (JWT secret, DB URI etc.)
server.js -> Main server entry
The backend is deployed on Render.
Environment variables handled securely via .env.
git clone https://github.com/ChaahatL/smart-interview-scheduler.git
cd smart-interview-schedulernpm installPORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_keynpm run devFor production:
npm start| Method | Endpoint | Description | Access |
|---|---|---|---|
| POST | /api/auth/signup | User registration | Public |
| POST | /api/auth/login | User login | Public |
| PUT | /api/auth/update | Update profile | Private |
| POST | /api/availability | Create availability | Interviewer |
| GET | /api/availability | Fetch availability | All |
| POST | /api/booking | Create booking | Candidate |
| GET | /api/booking/my | View my bookings | Candidate/Interviewer |
| GET | /api/booking/all | View all bookings (Admin) | Admin |
| DELETE | /api/booking/:id | Cancel booking | Candidate |
Built by Chahat Lokhande
- Admin dashboard
- Email notifications
- Advanced analytics
- Full automated test suite
PRs and suggestions welcome! This project is built for learning and demonstrating full-stack SDE skills.