How sankar-ayudham/ai-job-portal works
This is a MERN hiring portal whose main workflow runs from candidate job search and application through resume upload, ATS analysis, and recruiter review. The React app also supports registration/login, application tracking, and AI resume writing; recruiters manage listings and review ranked applicants. Express routes dispatch requests to controllers, which read and write MongoDB models, while AI analysis and cloud resume storage use external services. The graph reflects documented capabilities where implementation excerpts were unavailable; some route-to-controller wiring and client API calls are therefore represented only where supported by the tree or README.
Main entry points: server.js Express server · App.jsx React application · aiController.js ATS and resume AI · axios.js API client
Components 29
Candidate and recruiter UI
- React application
client/src/App.jsx - Candidate pages
client/src/pages/Jobs.jsx - Recruiter pages
client/src/pages/RecruiterDashboard.jsx - Resume builder
client/src/pages/ResumeBuilder.jsx - API client
client/src/api/axios.js
API and access control
- Express server
server/server.js - Job routes
server/routes/jobRoutes.js - Application routes
server/routes/applicationRoutes.js - Auth routes
server/routes/authRoutes.js - AI routes
server/routes/aiRoutes.js - Upload routes
server/routes/uploadRoutes.js
Hiring workflows
- Authentication
server/controllers/authController.js - Job search and management
server/controllers/jobController.js - Applications
server/controllers/applicationController.js - Recruiter workflows
server/controllers/recruiterController.js
AI and documents
- ATS and resume AI
server/controllers/aiController.js - Resume upload
server/controllers/uploadController.js - Cloud file storage
server/utils/cloudinary.js
Persistence
- MongoDB
server/config/db.js - User records
server/models/User.js - Job records
server/models/Job.js - Application records
server/models/Application.js - Candidate profiles
server/models/Profile.js - Resume records
server/models/Resume.js - Saved jobs
server/models/SavedJob.js - Notifications
server/models/Notification.js
Other components
- Candidate
- Recruiter
- Groq LLM
Connections 31
- Candidate → React application: uses
- Recruiter → React application: uses
- React application → Candidate pages: routes to
- React application → Recruiter pages: routes to
- React application → Resume builder: routes to
- Candidate pages → API client: requests
- Recruiter pages → API client: requests
- Resume builder → API client: requests
- API client → Express server: REST calls
- Express server → Job routes: mounts
- Express server → Application routes: mounts
- Express server → Auth routes: mounts
- Express server → AI routes: mounts
- Express server → Upload routes: mounts
- Job routes → Job search and management: dispatches
- Application routes → Applications: dispatches
- Auth routes → Authentication: dispatches
- AI routes → ATS and resume AI: dispatches
- Upload routes → Resume upload: dispatches
- Job search and management → Job records: queries
- Job search and management → Application records: queries
- Applications → Application records: reads/writes
- Authentication → User records: reads/writes
- ATS and resume AI → Application records: loads and saves
- ATS and resume AI → Job records: loads job
- ATS and resume AI → Groq LLM: requests analysis
- Resume upload → Cloud file storage: uploads file
- Cloud file storage → MongoDB: stores file reference
- Job records → MongoDB: persists
- Application records → MongoDB: persists
- User records → MongoDB: persists