Job Portal
What is a Job Portal?
A Job Portal is a full-stack MERN web application that allows users to search and apply for jobs online, while administrators can manage jobs, applications, and registered users.
Users can securely create an account, login, view available jobs, search jobs, view complete job details, apply for jobs, upload resumes, and track their applications.
The application uses JWT Authentication so that only logged-in users can access protected features.
Each user's applications and profile information are securely managed. Users can apply for jobs and view their own application status.
An Admin Dashboard is also included. The admin can create, edit, and delete jobs, view all applications, approve or reject applications, view application details, manage registered users, update user roles/status, and delete users.
Unlock New Career Opportunities
⬇️
Features of Job Portal
User Features
| Feature | Description |
|---|---|
| User Registration | Create a new job seeker account |
| User Login | Login securely using email and password |
| JWT Authentication | Protects user-only pages and APIs |
| View Jobs | Display available job opportunities |
| Search Jobs | Search jobs by title, company, or keyword |
| Job Details | View complete job information |
| Apply for Jobs | Submit applications for available jobs |
| Resume Upload | Upload resume while applying |
| My Applications | View all jobs applied by the user |
| Application Status | Track Applied, Approved, or Rejected status |
| Application Details | View complete application information |
| Logout | Securely logout from the application |
Admin Features
| Feature | Description |
|---|---|
| Admin Login | Secure login for administrators |
| Admin Dashboard | View job portal statistics |
| Create Job | Add new job opportunities |
| View Jobs | Display all created jobs |
| Edit Job | Update job information |
| Delete Job | Remove unwanted jobs |
| View Applications | View all submitted job applications |
| Search Applications | Search applicant or job title |
| Application Details | View complete applicant information |
| Approve Application | Approve a candidate's application |
| Reject Application | Reject a candidate's application |
| Application Status | Update and display application status |
| Registered Users | View registered users |
| Edit User | Update user information |
| Change Role | Change user role |
| Change Status | Activate or update user status |
| Delete User | Remove users from the database |
| Admin Logout | Securely logout from admin dashboard |
Technologies Used
Frontend
| Technology | Purpose |
|---|---|
| React.js | User interface |
| Vite | Fast React development setup |
| JSX | Component structure |
| CSS | Styling and responsive layout |
| Axios | API communication |
| React Router DOM | Page navigation |
| Context API | Authentication/user state management |
Backend
| Technology | Purpose |
|---|---|
| Node.js | JavaScript runtime |
| Express.js | Backend API framework |
| MongoDB | Stores users, jobs, and applications |
| Mongoose | MongoDB connection and schemas |
| JWT | Secure authentication |
| bcryptjs | Password hashing |
| CORS | Frontend-backend communication |
| dotenv | Environment variable management |
| Multer | Resume file upload |
Job Portal File Structure
Backend Files
backend/
├── server.js
├── .env
├── package.json
│
├── config/
│ └── db.js
│
├── models/
│ ├── User.js
│ ├── Job.js
│ └── Application.js
│
├── controllers/
│ ├── authController.js
│ ├── jobController.js
│ ├── applicationController.js
│ └── adminController.js
│
├── routes/
│ ├── authRoutes.js
│ ├── jobRoutes.js
│ ├── applicationRoutes.js
│ └── adminRoutes.js
│
├── middleware/
│ ├── authMiddleware.js
│ ├── adminMiddleware.js
│ └── uploadResume.js
│
└── uploads/
└── resumes/
Frontend Files
frontend/
├── src/
│ ├── App.jsx
│ ├── App.css
│ ├── main.jsx
│ │
│ ├── components/
│ │ ├── Navbar.jsx
│ │ ├── JobCard.jsx
│ │ ├── PrivateRoute.jsx
│ │ └── AdminRoute.jsx
│ │
│ ├── context/
│ │ └── AuthContext.jsx
│ │
│ ├── pages/
│ │ ├── Home.jsx
│ │ ├── Login.jsx
│ │ ├── Register.jsx
│ │ ├── JobDetails.jsx
│ │ ├── ApplyJob.jsx
│ │ ├── MyApplications.jsx
│ │ ├── ApplicationDetails.jsx
│ │ ├── AdminLogin.jsx
│ │ ├── AdminDashboard.jsx
│ │ ├── AdminJobs.jsx
│ │ ├── CreateJob.jsx
│ │ ├── EditJob.jsx
│ │ ├── AdminApplications.jsx
│ │ └── Users.jsx
│ │
│ ├── services/
│ │ └── api.js
│ │
│ └── styles/
│ └── App.css
│
├── public/
├── package.json
└── vite.config.js
Simple Job Portal Flow
User opens Job Portal
↓
User opens Register page
↓
User creates account
↓
Password is hashed using bcrypt
↓
User data is saved in MongoDB
↓
User logs in
↓
JWT token is created
↓
Token is saved in browser
↓
User opens Job Portal Home
↓
Available jobs are displayed
↓
User searches for a job
↓
User opens Job Details
↓
User clicks Apply
↓
User enters application details
↓
User uploads resume
↓
Application is saved in MongoDB
↓
User can view My Applications
↓
Admin reviews application
↓
Admin Approves or Rejects application
↓
User can view updated application status
Admin Dashboard Flow
Admin opens Admin Login
↓
Enter Admin Email
↓
Enter Admin Password
↓
Backend verifies admin role
↓
JWT token generated
↓
Admin Dashboard opens
↓
Admin views portal information
↓
Manage Jobs
↓
Manage Applications
↓
Manage Users
↓
Logout
Backend Installation Commands
mkdir backend
cd backend
npm init -y
npm install express mongoose cors dotenv bcryptjs jsonwebtoken multer
npm install nodemon --save-dev
mkdir models routes controllers middleware config
Backend Run Command
Add the development script in package.json:
"scripts": {
"dev": "nodemon server.js"
}
Then run:
npm run dev
Frontend Installation Commands
mkdir frontend
cd frontend
npm create vite@latest .
npm install
npm install axios react-router-dom
Frontend Run Command
npm run dev
Complete Job Portal Flow
JOB PORTAL
|
┌──────────────┴──────────────┐
↓ ↓
USER ADMIN
↓ ↓
Register Admin Login
↓ ↓
Login Admin Dashboard
↓ ↓
Home Page ┌──────────┼──────────┐
↓ ↓ ↓ ↓
Search Jobs Jobs Applications Users
↓ ↓ ↓ ↓
Job Details Create Review Manage
↓ Edit Approve
Apply Delete Reject
↓
Upload Resume
↓
Application Saved
↓
My Applications
↓
Applied / Approved / Rejected
Output Screens of Job Portal











Summary
The Job Portal is a full-stack MERN application that connects job seekers and administrators. Users can search and apply for jobs, upload resumes, and track application status. Admins can manage jobs, applications, and users through the Admin Dashboard.
This project demonstrates React, Node.js, Express, MongoDB, JWT Authentication, CRUD operations, file upload, protected routes, and role-based access control.