01
Architecture
Classic MERN stack with JWT auth and role-based middleware on every protected route. Frontend state is managed with Redux Toolkit; Socket.IO handles realtime notifications for new applications and status changes. File uploads (resumes, company logos) go through Multer and land in Cloudinary.
- ▸Express + Mongoose models per domain (User, Job, Application, Internship).
- ▸Role-based middleware gates routes per student/recruiter/admin.
- ▸Socket.IO rooms scoped per user for targeted notifications.
02
AI integration
Resume review and job description generation are abstracted behind a single AI service layer so the provider (Gemini or OpenAI) can be swapped without touching the rest of the codebase. Prompts are templated server-side — clients never send raw prompts — and outputs are validated before being returned.
- ▸Server-side prompt templates keyed off job role + resume content.
- ▸Provider abstraction so Gemini / OpenAI are interchangeable.
- ▸Response validation to catch malformed or unsafe model output.
03
Delivery
Frontend deployed on Vercel, backend on Azure App Service, MongoDB Atlas as the managed database. Environment-scoped secrets, CORS locked to known origins, and structured logging on the API so issues are debuggable in production.