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

⬇️

Click Here

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.

Previous Topic Expense Tracker