Job Portal Final Project 2024
Job Portal Final Project 2024
JOB PORTAL
A Project Report Submitted in Partial Fulfilment of the Requirement for the
Award of the Degree of Bachelor of Engineering under
B.P.U.T , Rourkela
GUIDED BY:
Mr. Jyoti Ranjan Rout
SUBMITTED BY:
NAME: REGD NO:
SHUBHRANSHU KHATUA 2221225011
RAMAKANTA DHADA 2221225009
TANMAY KUMAR NAYAK 2221225015
ASHISH DAS 2101225019
ARCHITA GIRI 2221225110
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
SERGARH-756060, YEAR-2024
CERTIFICATE
BALASORE COLLEGE OF ENGINEERING & TECHNOLOGY
BALASORE, ODISHA
NAME SIGNATURE
Yours Faithfully,
Place: Balasore
❖ RAMAKANTA DHADA
❖ SHUBHRANSHU KHATUA
❖ TANMAY KUMAR NAYAK
❖ ASHISH DAS
❖ ARCHITA GIRI
Project Responsibility Form
1 About Collage 7
2 Abstract 8
2.A Introduction 9
2.B Objective 10
2.C. Scope 11
3 System Analysis 12 - 20
4 System Design 23 - 32
5 UI snapshot 33 – 76
6 Conclusion 77
8 Bibliography 79
9 Website 80
ABSTRACT:
The main purpose of the thesis was to research and study the
concept of React Js and to design and build a websitetheoretical
part of the thesis explains the concept and the theory of React
Js and its components that are useful to design a website. The
web application was built using React Js along with Bootstrap
CSS as a front-end tool and Node Js as a back-end tool.
In this presentation, I will take you through the motivations behind this
project, its core features, and the technology stack that powers the
platform. We will also explore the challenges faced during the
development process and how these challenges were overcome, along
with the potential for future improvements and expansions.
2.B.OBJECTIVE
The objective of the responsive job portal website is to create an
efficient and user-friendly platform that bridges the gap between job
seekers and employers by simplifying the recruitment process. In
today’s fast-paced digital world, both job seekers and recruiters face
challenges in accessing, managing, and processing relevant
opportunities and candidates. This job portal seeks to address these
challenges by offering a streamlined and responsive solution.
For employers, the platform offers easy job posting, allowing them to
create detailed job listings and manage them effectively. Employers can
review applications, shortlist candidates, and communicate with applicants
within the portal, streamlining the recruitment process. The applicant
management feature simplifies handling large volumes of applications,
saving time and effort for recruiters. A mobile-first design approach
ensures that the website is fully responsive, allowing users to access the
platform seamlessly from desktops, tablets, or smartphones, making it
accessible on-the-go.
3. B.IDENTIFICATION OF NEED
System analysis is a process of gathering and interpreting facts,
diagnosing problems, and the information to recommend improvements
to the system. It is a problem-solving activity that requires intensive
communication between the system users and system developers. System
analysis or study is an important phase of any system development
process. The system studies the minutest detail and gets analyzed. The
system analysis plays the role of the interrogator and dwells deep into the
workings of the present system. The System is viewed as a whole and the
input to the system is identified. The outputs from the organization are
traced to the various processes. System analysis is concerned with
becoming aware of the problem, identifying the relevant and Decisional
variables, analyzing and synthesizing the various factors, and determining
an optimal or at least a satisfactory solution or program of action.
❑ Applications:
The Iterative Waterfall Model is suitable for projects with evolving or
unclear requirements. It is commonly used in software development
projects where regular feedback and refinement are essential.
Additionally, it is applicable in scenarios where partial system
delivery is beneficial, allowing stakeholders to assess progress and
make adjustments.
3. A.STUDY OF THE SYSTEM
Login:
1 . User Login: Here user will log in to Search Jobs.
2 . Admin Login: Here admin will log in to handle all the database.
Signup:
1 . User Signup: Here, the user will sign up to JOB PORTAL page
2 . Admin Signup: Here, the admin will sign up to handle all the
database.
Home:
1 . Home1: This page is for fetching the jobs of the admin.
2 . Home2: This page is the main interface and from this page,
3 we have to visit the search page to find new jobs.
➢ About us: This page will show the details about the website
developers.
User Interface:
1. Search for job: In this case, the user will search the product to
order.
2. My Account: Here, the user will see their own account details..
Admin Interface:
1 . User Database: Here, the admin will see the details of users.
3.A.INPUT AND OUTPUT
The main inputs, outputs and the major function the details are:
➢ INPUT:
➢ OUTPUT:
1. User can view the interface i.e., all the Job categories,
user details, user database etc.
2. Admin can view all the database.
3. SOFTWARE REQUIREMENT SPECIFICATIONS
Software Requirements Specification provides an overview of the entire project.
It is a description of a software system to be developed, laying out functional
and non-functional requirements. The software requirements specification
document enlists enough necessary requirements that are required for the
project development. To derive the requirements we need to have a clear and
thorough understanding of the project to be developed. This is prepared after
detailed communication with the project team and the customer.
The developer is responsible for:-
➢ Developing the system, which meets the SRS and solves all the
requirements of the system.
➢ Demonstrating the system and installing the system at the client’s job
details after acceptance testing is successful.
➢ Submitting the required user manual describing the system interfaces
to work on it and also the documents of the system.
➢ Conducting any user training that might be needed for using the
system.
➢ Maintain the system for a period of one year after installation.
Functional Requirements:
o User Registration and Authentication:
1. Users should be able to create accounts securely.
2. The system should authenticate users and manage login sessions.
o Browse and Search:
1. Customers should be able to browse and search for job
based on location or other filters.
o Items Display:
1. Each Job seeker should have detailed and up-to-date Jobs
2. Users should be able to view Job Search, descriptions, and find job
o Payment Integration:
1. Secure payment options should be integrated (credit cards,
digital wallets, etc.).
2. Users should receive confirmation of successful payment.
Non-Functional Requirements:
o Performance:
1. Response Time: The system should respond to user
actions promptly, with minimal latency.
2. Scalability: The platform must handle increased user loads
during peak hours without significant performance degradation.
o Reliability:
1. Availability: The system should be available and accessible to
users consistently, minimizing downtime.
2. Fault Tolerance: The system should gracefully handle errors or
failures, ensuring uninterrupted service.
o Security:
1. Data Encryption: Ensure secure transmission of
sensitive information, such as user details and
payment data.
2. Authentication and Authorization: Implement robust
mechanisms to authenticate users and authorize access
to specific features.
o Usability:
1. Intuitive User Interface: The system should have a user-friendly
interface that is easy to navigate.
2. Accessibility: Ensure the platform is accessible to users with
disabilities, complying with relevant standards.
❑ Hardware Requirements:
1 . Computer has Intel I5 Processor
2 . 8 GB RAM
3 . DVD-ROM Drive
❑ Software Requirements:
4 . Windows 11 OS
. Visual Studio Code
SOFTWARE ENGINEERING PARADIGM APPLIED
Software paradigms refer to the methods and steps, which are taken while
designing the software. There are many methods proposed and are in work
today, but we need to see where in software engineering these paradigms
stand. These can be combined into various categories, though each of them is
contained in one another.
22
4. A.DATA FLOW DIAGRAM
❑ DFD EXAMPLE :
E-Commerce
Website
LEVEL 1 DFD:
4. A.SEQUENCE DIAGRAM
Use case diagrams are considered for high level requirement analysis
of a system. So when the requirements of a system are analyzed the
functionalities are captured in use cases.
So we can say that uses cases are nothing but the system
functionalities written in an organized manner. Now the second things
which are relevant to the use cases are the actors. Actors can be
defined as something that interacts with the system.
The actors can be human user, some internal applications or may be
some external applications. So in a brief when we are planning to draw a
use case diagram we should have the following items identified.
➢ Functionalities to be represented as an use case
➢ Users
➢ Relationships among the use cases and actors.
Denotes
Home <<Includes>>
Find
Job
Add Login
Log In
Job
User
Authentication
Post a Job
Save Jobs
Save Jobs
Job Listing
Log Out
Schema Design
The schema is an abstract structure or outline representing the logical
view of the database as a whole. Defining categories of data and
relationships between those categories, database schema design
makes data much easier to retrieve, consume, manipulate, and
interpret.
DB schema design organizes data into separate entities,
determines how to create relationships between organized
entities, and influences the applications of constraints on data.
Designers create database schemas to give other database users,
such as programmers and analysts, a logical understanding of
data.
Home Page 1:-
Google Authentication
// HOME1
import React from 'react
'import
'./About.css'import
about_img
from'../../assets/about.pn
g’
import play_icon from
'../../assets/play-
icon.png’
const About = () => {
return (
<div className='about’>
<div className='about-
left'>
<img src={about_img}
alt='' className='about-
img'/>
<img src={play_icon}
alt=‘’
className='play-icon'/>
</div>
<div className='about-
right’>
<h2>FIND YOUR
PATH!</h2>
<h3>Connecting top
talent with the best
opportunities for a
brighter future.</h3>
<p>Welcome to Job Hunt,
the ultimate platform
connecting job seekers
with the best
opportunities in their desired
fields. Whether you're a recent
graduate, a seasoned
professional, or an employer
looking to hire top talent, we
make the process smooth,
efficient, and tailored to your
needs. Explore a wide range of
job listings, filter by
industry, experience level, or
location, and discover your
next career move with ease. Our
mission is to simplify job
hunting and hiring, bringing
together the right people and
the right opportunities in one
place."</p> <p>we strive
to bridge the gap between
talented individuals and
thriving companies. Our
platform offers a seamless
experience for job seekers and
employers alike, with user-
friendly tools to search,
apply, and recruit. Whether
you're pursuing your dream job
or looking to build a great
team, we provide the resources
and support you need to
succeed. Join us today and take
the next step in your
professional journey."</p>
</div> </div> )}export
default About
about{ margin: 100px
auto; display: flex;
align-items: center;
justify-content: center;
width: 90%; }.about-
left{ flex-basis: 40%;
position:
relative;}.about-right{
flex-basis:56%;}.about-
img{ width: 90%;
border-radius:
10px;}.play-icon{
width: 60px;
position: absolute;
top: 50%; left:50%;
transform: translate(-
50%,-50%);}.about h3{
font-weight: 600;
font-weight: 16px;
color:#000F38;}.about
h2{ font-size: 35px;
color: #212EA0;
margin: 10px 0; max-
width: 400px;}.about p{
color: #676767;
margin-bottom: 15px;
}
import React from 'react'
import './Title.css'
: .title{
text-align: center;
color: #212EA0;
font-size: 20px;
font-weight: 600;
text-transform: uppercase;
margin: 70px 0 30px;
}
.title h2{
font-size: 40px;
color: #000f38;
margin-top: 5px;
text-transform: none;
>
}
. import React, { useRef } from
'react'
import './Testimonials.css'
import next_icon from
'../../assets/next-icon.png'
import back_icon from
'../../assets/back-icon.png'
import user_1 from
'../../assets/user-1.png'
import user_2 from
'../../assets/user-2.png'
import user_3 from
'../../assets/user-3.png'
import user_4 from
'../../assets/user-4.png'
const slideBackward=()=>{
if(tx < 0){
tx += 25;
}
slider.current.style.transform =
`translateX(${tx}%)`;
}
testimonials{
margin:80px auto;
padding: 0 80px;
position: relative;
}
.next-btn, .back-btn{
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
padding: 15px;
width: 50px;
border-radius: 50%;
cursor: pointer;
background: #212EA0;
}
.back-btn{
right: auto;
left: 0;
}
.slider{
overflow: hidden;
}
.slider ul{
display: flex;
width: 200%;
overflow-x: hidden;
transition: 0.5s;
}
.slider ul li{
list-style: none;
width: 50%;
padding: 20px;
}
import React from 'react'
import './Service.css'
import theme_pattern from '../../assets/theme_pattern.svg';
import Service_Data from '../../assets/services_data.js';
import arrow_icon from '../../assets/arrow_icon.svg'
</div>
.services{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 80px;
margin:80px 170px;
}
.services-title{
position: relative;
}
.services-title h1{
padding: 0px 30px;
font-size: 40px;
font-weight: 600;
}
.services-title img{
position: absolute;
bottom:0;
right:0;
z-index:-1;
}
.service-format{
display:flex;
flex-direction: column;
justify-content: center;
gap: 20px;
padding: 60px;
border-radius: 10px;
border:2px solid black;
transition: 0.4s;
cursor: pointer;
}
.services-container{
display: grid;
grid-template-columns: 1fr 1fr
.services-container{
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap:40px;
margin-bottom: 80px;
}
.service-format h3{
font-size: 28px;
font-weight: 600;
}
.service-format h2{
font-size: 38px;
font-weight: 800;
background:linear-
gradient(267deg,#DA7C25
0.36%,#B923E1 102.06%);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
import React from 'react'
import './Programs.css'
import program_1 from '../../assets/program-1.png'
import program_2 from '../../assets/program-2.png'
import program_3 from '../../assets/program-3.png'
import program_icon_1 from '../../assets/program-icon-1.png'
import program_icon_2 from '../../assets/program-icon-2.png'
import program_icon_3 from '../../assets/program-icon-3.png'
</div>
</div>
)
}
}
.caption{
border-radius: 10px;
position: absolute;
top:0;
left:0;
bottom: 0;
right: 0;
background:rgba(235, 235, 238, 0.3);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
color:#fff;
.caption{
border-radius: 10px;
position: absolute;
top:0;
left:0;
bottom: 0;
right: 0;
background:rgba(235, 235, 238, 0.3);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
color:#fff;
cursor: pointer;
opacity: 0;
padding-top: 50%;
transition: 0.4s;
}
.caption img{
width:80px;
margin-bottom: 10px;
}
.program:hover .caption{
opacity: 1;
padding-top: 0;
}
import React from 'react'
import './Hero.css'
}
.hero-text{
text-align: center;
max-width: 800px;
}
.hero-text h1{
font-size: 60px;
font-weight: 600;
}
.hero-text p{
max-width: 1000px;
margin:10px auto 20px;
line-height:1.4
import React from 'react'
import './Guddu.css'
h1{
display: flex;
justify-content: center;
text-align: center;
font-size: 50px;
}
import React from 'react'
import './Footer.css'
</div>
)
}
}
.footer ul li{
list-style: none;
display: inline-block;
margin-left: 20px;
color: ;
}
import React from 'react'
import Heading from '../../Backend/Server/Heading'
import Heros from '../../Backend/Server/Heros/Heros'
<Heading/>
<Heros/>
</div>
)
}
formData.append("access_key", "9b52f3f6-7d9d-4182-ae01-
6416555de4d2");
if (data.success) {
setResult("Form Submitted Successfully");
event.target.reset();
} else {
console.log("Error", data);
setResult(data.message);
}
};
return (
<div className='contact'>
<div className="contact-col">
<h3>Send Message <img src={msg_icon} alt=""/></h3>
<p>We’re here to help! If you have any questions, feedback, or need
assistance, don’t hesitate to get in touch. Our team is ready to assist you
with any inquiries. Simply reach out, and we’ll respond as soon as possible.
We look forward to hearing from you!
</p>
<ul>
<li> <img src={mail_icon} alt=
""/>Contact@shubhranshukhatua@gmail.companies</li>
<li> <img src={phone_icon} alt= ""/>+91 8114-8787-88</li>
<li> <img src={location_icon} alt= ""/>Odisha,Balasore,756059</li>
</ul>
</div>
<div className="contact-col"></div>
<form onSubmit={onSubmit}>
<label>Your Name</label>
<input type="text" name='name' placeholder='Enter Your Name'
required/>
<label>Phone Number</label>
<input type="tel" name='phone' placeholder='Enter Your Mobile
Number' required/>
<label>Write Your Msg</label>
<textarea name="message" id="" rows="6" placeholder='Enter Your
Message' required></textarea>
<button type= 'submit' className='btn dark-btn'>Submit</button>
</form>
<span>{result}</span>
</div>
)
.contact{
margin: 80px auto;
max-width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.contact-col{
flex-basis: 48%;
color: #676767;
}
.contact-col{
color: #000F38;
font-weight: 500;
font-size: 25px;
}
.contact-col h3{
color: #000F38;
font-weight: 500;
font-size: 25px;
display: flex;
align-items: center;
margin-bottom: 20px;
}
.contact-col h3 img{
width: 35px;
margin-left: 10px;
}
.contact-col p{
max-width: 600px;
list-style: 0.3;
font-size: 18px;
.contact-col ul li{
display: flex;
align-items: center;
margin: 20px 0;
color: black;
}
.contact-col ul li img{
width: 25px;
margin-right: 10px;
}
/* Optional background */
/* Form styling */
form {
width: 100%;
max-width: 400px; /* Limit the
width of the form */
background-color: white;
padding: 20px;
border-radius: 8px; /* Rounded
corners */
box-shadow: 0 4px 8px rgba(0, 0, 0,
0.1); /* Subtle shadow for effect */
}
return (
<div>
<h4>Our Partner</h4>
<section className="c-
wrapper">
<div className= "paddings
innerWidth flexCenter c-container">
<img src={download_1}
alt=""/>
<img src={download_2}
alt=""/>
<img src={download_4}
alt=""/>
<img src={download_5} a
c-wrapper {
display: flex;
justify-content: center;
align-items: center;
background-color: #f0f0f5;
padding: 20px 0;
}
.innerWidth {
width: 80%; /* Adjust this width
based on the content alignment you
prefer */
margin: 0 auto;
}
.flexCenter {
display: flex;
justify-content: space-around;
align-items: center;
}
.c-container img {
max-width: 200px; /* Adjust the size
to fit the logos appropriately */
height: auto;
object-fit: contain; /* Ensures the
logos maintain their proportions */
margin: 0 20px; /* Adds space
between logos */
}
import React from 'react'
import './Button.css'
</div>
);
}
export default Button;
.button-container{
text-align: center;
padding: 20px 40px;
border-radius: 50px;
background:linear-gradient(267deg,#DA7C25
0.36%,#B923E1 102.06%);
font-size: 22px;
align-items: center;
justify-content: space-between;
min-width: 30px;
align-items: center;
justify-content: center;
}
import React from 'react'
import './About.css'
import about_img from '../../assets/about.png'
import play_icon from '../../assets/play-icon.png'
</div>
</div>
)
}
}
.about-left{
flex-basis: 40%;
position: relative;
}
.about-right{
flex-basis:56%;
}
.about-img{
width: 90%;
border-radius: 10px;
}
.play-icon{
width: 60px;
position: absolute;
top: 50%;
left:50%;
transform: translate(-50%,-50%);
}
.about h3{
font-weight: 600;
font-weight: 16px;
color:#000F38;
}
.about h2{
font-size: 35px;
color: #212EA0;
margin: 10px 0;
max-width: 400px;
.heading-container {
max-width: 800px;
margin: 0 auto;
padding: 40px 20px;
text-align: center;
}
.main-heading {
font-size: 3rem;
font-weight: 800;
line-height: 1.2;
margin-bottom: 20px;
color: #1a202c;
}
.sub-heading {
font-size: 1.1rem;
line-height: 1.5;
color: #4a5568;
margin-bottom: 30px;
}
.highlight {
color: #4299e1;
font-weight: 600;
}
.action-container {
display: flex;
justify-content: center;
align-items: center;
.get-started-btn {
background-color: #1a202c;
color: white;
font-weight: 600;
padding: 12px 24px;
border: none;
border-radius: 6px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.get-started-btn:hover {
background-color: #2d3748;
}
.search-form {
position: relative;
flex-grow: 1;
max-width: 300px;
}
.search-input {
width: 100%;
padding: 12px 40px 12px 16px;
border: 1px solid #e2e8f0;
border-radius: 6px;
font-size: 1rem;
outline: none;
transition: border-color 0.3s ease;
}
.search-input:focus {
border-color: #4299e1;
}
import React from 'react';
import './Heros.css';
.job-card {
background-color: #fff;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
padding: 20px;
display: flex;
flex-direction: column;
}
.job-card-header {
display: flex;
align-items: center;
margin-bottom: 15px;
}
.company-logo {
width: 50px;
height: 50px;
object-fit: contain;
margin-right: 15px;
}
.job-details {
display: flex;
justify-content: space-between;
margin-bottom: 15px;
}
.job-type, .job-salary {
font-size: 14px;
color: #0066cc;
background-color: #e6f2ff;
padding: 5px 10px;
border-radius: 15px;
}
.job-footer {
display: flex;
justify-content: space-between;
align-items: center;
}
.posted-time {
font-size: 12px;
color: #999;
}
.save-job {
background-color: #5e35b1;
color: white;
border: none;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
}
.save-job:hover {
background-color: #4527a0;
}
{
"name": "new-portal-project",
"version": "0.0.0",
"lockfileVersion": 3,
: true,
"packages": {
"": {
"name": "new-portal-project",
"version": "0.0.0",
"dependencies": {
"@auth0/auth0-react": "^2.2.4",
"@clerk/clerk-react": "^5.5.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^6.26.1"
},
"devDependencies": {
"@eslint/js": "^9.9.0",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@vitejs/plugin-react": "^4.3.1",
"autoprefixer": "^10.4.20",
"eslint": "^9.9.0",
"eslint-plugin-react": "^7.35.0",
"eslint-plugin-react-hooks":
"^5.1.0-rc.0",
"eslint-plugin-react-refresh":
"^0.4.9",
"globals": "^15.9.0",
"postcss": "^8.4.42",
"tailwindcss": "^3.4.12",
"vite": "^5.4.1"
}
},
CONCLUSION
The job portal has significant potential for future enhancements and
scalability. One of the primary areas for improvement is the integration of
AI-driven job recommendations, which can match users with job
opportunities based on their skills, preferences, and search history.
Another promising feature would be real-time notifications for job
openings and application updates via email or mobile apps.Expanding the
platform to include global job listings would make it more versatile,
catering to international job seekers and employers. Additionally,
incorporating resume parsing and skill assessment tools would streamline
the recruitment process, allowing employers to filter candidates based on
qualifications and performance metrics. A video interview feature can
further enhance the hiring process, offering a more comprehensive
platform for virtual recruitment.Lastly, adding advanced analytics for
employers to track applicant performance and job post engagement
would provide valuable insights. With continuous updates and the
integration of emerging technologies, this platform can evolve into a
comprehensive employment solution.
BIBLIOGRAPHY
• Software Engineering: A Practitioner's Approach by Roger S.
Pressman .
1. https://www.scribd.com/doc/46691636/Job-Portal-Reference
2. https://factohr.com/job-portals-in-india/
3. https://www.keka.com/best-job-portals-in-india
4. https://www.naukri.com/
5. https://www.indeed.com/
6. https://www.linkedin.com/
7. https://angel.co/
8. https://www.glassdoor.com/
9. https://bvm.com/job-portals-in-india/
10. https://quickjob/.com/job-portals-in-india/