MERN Job Portal
A full-stack Job Portal application built using the MERN stack that connects job seekers with employers through a secure and scalable recruitment platform. The system enables employers to post and manage job listings while allowing job seekers to search, apply, and track applications seamlessly.
-
Secure JWT-based authentication
-
Role-based access control
-
Separate workflows for:
- Job Seekers
- Employers
-
Password encryption using bcrypt
-
Protected routes and secure session handling
- Create and publish job listings
- Update and delete jobs
- View all available jobs
- Search and filter jobs by category and location
- Track posted jobs
- Apply to jobs with resume upload
- Upload resumes through Cloudinary integration
- Submit cover letters and applicant details
- View submitted applications
- Employer-side application management
- Post new job opportunities
- Manage active job listings
- Review candidate applications
- Access applicant details and resumes
- Browse available opportunities
- View job details
- Submit applications
- Track applied jobs
- Modern React-based frontend
- Mobile-friendly design
- Fast navigation using React Router
- Interactive notifications using React Hot Toast
- React.js
- React Router DOM
- Axios
- React Hot Toast
- Vite
- Node.js
- Express.js
- JWT Authentication
- RESTful APIs
- MongoDB
- Mongoose ODM
- Cloudinary (Resume Storage)
Job-Portal/
β
βββ backend/
β βββ controllers/
β βββ database/
β βββ middlewares/
β βββ models/
β βββ routes/
β βββ utils/
β βββ app.js
β βββ server.js
β
βββ frontend/
β βββ public/
β βββ src/
β β βββ components/
β β βββ App.jsx
β β βββ main.jsx
β βββ vite.config.js
β
βββ README.md-
User registers as:
- Job Seeker
- Employer
-
Password is hashed using bcrypt.
-
User information is stored in MongoDB.
-
JWT token is generated upon successful registration.
- Credentials are validated.
- Password is compared using bcrypt.
- JWT token is issued.
- Protected resources become accessible.
{
name,
email,
phone,
password,
role,
createdAt
}{
title,
description,
category,
country,
city,
location,
fixedSalary,
salaryFrom,
salaryTo,
expired,
postedBy
}{
name,
email,
phone,
address,
coverLetter,
resume,
applicantID,
employerID
}- Register User
- Login User
- Logout User
- Get User Profile
- Post Job
- Get All Jobs
- Get Single Job
- Delete Job
- Get Employer Jobs
- Apply for Job
- Get Applicant Applications
- Get Employer Applications
- Delete Application
Resumes are uploaded and stored securely using Cloudinary.
Benefits:
- Scalable cloud storage
- Secure file hosting
- Easy retrieval of applicant resumes
- Reduced backend storage overhead
git clone https://github.com/your-username/job-portal.git
cd job-portalcd backend
npm installCreate a .env file:
PORT=4000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET_KEY=your_secret_key
JWT_EXPIRE=7d
FRONTEND_URL=http://localhost:5173
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secretRun backend:
npm startcd frontend
npm installRun frontend:
npm run devApplication runs at:
http://localhost:5173- JWT-based secure authentication
- Role-based authorization system
- RESTful API architecture
- Cloudinary-powered resume management
- Modular backend architecture
- MongoDB schema design for scalability
- Error handling middleware
- Secure password hashing with bcrypt
- Separation of concerns using controllers, routes, and models
- Email notifications
- Job recommendations using AI
- Resume parsing
- Advanced job filtering
- Company profiles
- Interview scheduling
- Real-time messaging
- Application analytics dashboard
- Admin panel
- Docker deployment
Through this project, I gained hands-on experience in:
- Full-stack MERN development
- Authentication and authorization
- REST API development
- MongoDB schema design
- Cloudinary file storage
- Backend architecture and middleware
- Agile development workflows
- Git version control and collaborative development
M Gowthami
B.Tech, Computer Science Engineering IIITDM Jabalpur