20MCA010
20MCA010
FILTERING SYSTEM
PROJECT REPORT
Submitted by
A. ARUN
Register No: 20MCA010
JUNE 2022
KUMARAGURU COLLEGE OF TECHNOLOGY
(An Autonomous Institution Affiliated to Anna University, Chennai)
PROJECT wORK
JUNE 2022
A. ARUN
C
Internal Examiner External Examiner
DECLARATION
I affim that the project work titled Job Recommendation and Filtering System being
submitted in partial fulfilment for the award of Master of Computer Applications (MCA) is
the original work caried out by me. It has not fomed the part of any other project work
submitted for award of any degree or diploma, either in this or any other University
A. Arun
20MCA010
Dr. R. K. Kavitha
I thank all mighty who has been with me through every walk of life, guarding me and showering
the blessings throughout the endeavour to put forth my dissertation.
Finally, I wish to thank my parents, friends and well-wishers who have been a catalyst
throughout the development of the project work.
TABLE OF CONTENTS
Abstract i
List of Tables ii
List of Figures ii
List of Abbreviations iii
1 Introduction
1.1 Organization Profile 1
1.2 Objective 1
2 System Analysis
2.1 Existing System 2
2.2 Proposed System 2
2.3 Feasibility Study
2.3.1 Technical Feasibility 3
2.3.2 Operational Feasibility 3
2.3.3 Economic Feasibility 4
3 System Specification
3.1 Hardware Requirements 5
3.2 Software Requirements 5
4 Software Description
4.1 Front End 6
5 Project Description
5.1 Problem Definition 9
5.2 Overview of the Project 9
5.3 Module Description 10
5.4 Data Flow Diagram 12
5.5 E-R Diagram 15
5.6 Database Design 16
6 System Testing
6.1 Unit Testing 22
6.2 Integration Testing 22
6.3 Performance Testing 22
6.4 System Testing 23
6.5 Regression Testing 23
6.6 Test Cases 23
7 System Implementation 25
8 Conclusion & Future Enhancements
8.1 Conclusion 27
8.2 Future Enhancements 27
9 Appendix
9.1 Source Code 28
9.2 Screen Shots 40
10 References 52
i
ABSTRACT
This project also has an employer module where the employers will register and post
jobs, and they can also edit and update the jobs posted. Employers can view candidates applied
for the post and it also feature to search candidates based on the skill and location. In some
cases, when employers urgently need candidates for work, they can search candidates and
contact them directly.
LIST OF TABLES
LIST OF FIGURES
LIST OF ABBREVIATIONS
CHAPTER 1
INTRODUCTION
The value of the education and training imparted by the college is highlighted by the interest
shown by leading companies for on-campus recruitments. Our alumni have done us proud by
proving their worth in their chosen field of work.
1.2 OBJECTIVE
This project’s main objective is to provide a good web application for job seekers (figure
9.2.1 to figure 9.2.11) and recruiters (figure 9.2.12 to figure 9.2.21). This application
recommends jobs to the candidates. It eases the work of the job applicants by recommending
jobs to the candidates based on the profile and skills. This application uses ‘Natural language
processing’ techniques to recommend jobs for job seekers.
The recruiters or employers uses the project to search for candidates as per their
requirements it also reduces the effort of the employers, and it helps employers to find
candidates in urgent situation.
2
CHAPTER 2
SYSTEM ANALYSIS
This chapter describes the analysis of the system. Analysis is a detailed study of the
various operations performed by the system and their relationship within and outside the
system.
In the existing system, the job applicants search of jobs manually and must apply for
the jobs even though some applications have recommendations, but it takes time to update if
the information changes. Most of the traditional job recommendations are made based on the
applicants’ preferences. The applicants may give irrelevant preferences, so they cannot find the
job that suits them.
2.1.1 DRAWBACKS
2.2.1 ADVANTAGES
Recommends jobs based on currently acquired skills.
Easy to find jobs that currently suit them.
Saves time and effort searching for suitable jobs.
3
CHAPTER 3
SYSTEM SPECIFICATION
RAM : Minimum of 4 GB
Storage : Minimum of 5 GB
Others : Internet connection.
CHAPTER 4
SOFTWARE DESCRIPTION
This chapter describes the software used for the development of Job Recommendation
And Filtering System.
4.1.1 HTML
Hypertext Markup Language (HTML) is the standard markup language for creating
web pages and web applications. With Cascading Style Sheets (CSS) and JavaScript, it
forms a triad of cornerstone technologies for the World Wide Web. Web browsers receive
HTML documents from a web server or from local storage and render the documents into
multimedia web pages. HTML describes the structure of a web page semantically and
originally included cues for the appearance of the document. HTML elements are the
building blocks of HTML pages. HTML provides a means to create structured documents
by denoting structural semantics for text such as headings, paragraphs, lists, links, quotes
and other items.
4.1.2 CSS
Cascading Style Sheets (CSS) is a style sheet language used for describing the
presentation of a document written in a markup language. Although most often used to set
the visual style of web pages and user interfaces written in HTML and XHTML, the
language can be applied to any XML document, including plain XML, SVG and XUL, and
is applicable to rendering in speech, or on other media.
4.1.3 BOOTSTRAP
Bootstrap is a free and open-source front-end web framework. It contains HTML and
CSS- based design templates for typography, forms, buttons, navigation and other interface
components, as well as optional JavaScript extensions. Unlike many earlier web
frameworks, it concerns itself with front-end development only. Bootstrap is a web
framework that focuses on simplifying the development of informative web pages (as
opposed to web apps). The primary purpose of adding it to a web project is to apply
Bootstrap's choices of colour, size, font and layout to that project.
7
4.1.4 JAVASCRIPT
JavaScript is a very powerful client-side scripting language, introduced to “make
webpages alive”. This allows us to create dynamic content for the web. JavaScript is a
lightweight language that is open-source and allows cross-platform. It doesn’t require
compilation and is interpreted with object-oriented capabilities. Also, it works with various
other programming languages. And this is the reason for its vast use all around the world.
Many popular websites and web applications like Google, Amazon, PayPal, etc use this
language. The file extension of a JavaScript file is .js
Most applications work due to an interaction between a client (user’s device) and a
remote server. The client requests data from the server. The server receives the request,
processes it and then responds accordingly. The response sent back is in a user-readable
format and is thus acceptable by the client. But this process takes time as well as resources.
Although users usually need this connection, in some projects, JavaScript often helps to
avoid it.
JavaScript allows the validation of forms without the input of the server, reducing
traffic. It provides wonderful tools for a more interactive and user-friendly website. Some
of the basic functions of JavaScript are:
Autocomplete: The search box gives suggestions, based on what the user has
already typed.
Form validation: If the users make a mistake while filling a form, JavaScript
immediately informs them of the error, avoiding filling it all again.
Fixes layout issues to avoid the overlapping of elements on the page.
Adds animation to the page to make it more attractive.
ADVANTAGES
• Faster Speed - It provides high speed to client-side languages. The various features
added to the JavaScript for interactivity helps in boosting the speed.
• Reduces Server Load - Avoid server traffic by validating user input on the client-
side. It reduces server load, giving it an advantage over other web languages.
• Rich Interfaces - JavaScript provides numerous interfaces to make the webpage more
interactive.
8
4.2.1 POSTGRESQL
4.3 FEATURES
The PostgreSQL Database Server is very Fast, Reliable, Scalable, And Easy to Use
If that is what developer are looking for, developer should give it a try. PostgreSQL Server
can run comfortably on a desktop or laptop, alongside their other applications, web servers,
and so on, requiring little or no attention. If developer dedicate an entire machine to
PostgreSQL. PostgreSQL can also scale up to clusters of machines, networked together.
9
CHAPTER 5
PROJECT DESCRIPTION
This chapter discusses about the problem that will be addressed by the project, a set of goals
of the project, the overall objectives for the project, as well as a project plan that describes the
activities the members will undertake.
In the existing system the job recommendations are made based on the users’ preferences
which may be good, but it doesn’t provide good job recommendation for applicants for current
skills and only recommends jobs of applicants wish. If the applicant wished for a job and
doesn’t have the skill he will not be selected for the job, so it will be useless.
APPLICANTS
The applicants can create an account and put their information in the application like
the personal details, education details, skills acquired etc. They can search the jobs based
on the job title and location and apply for that job. They can also revoke the application
and view list of applied jobs. (figure 9.2.1 to figure 9.2.11)
EMPLOYERS
The employers can also have an account and they can post jobs with the necessary
details and the employers can view the details of the users who applied for the jobs and
contact them for the interview process. In case of urgent hiring employers also has option
to search through apt candidates and contact them. They also have an option to generate
report of list of candidates applied from and till specified dates in PDF format. (figure 9.2.1
to figure 9.2.11)
10
5.3.8 MY JOBS
This module has option for the preview of the job post and list applied users for
the job post and the employer can generate a report of list of users applied from and
till the specified date in a PDF format. (figure 9.2.15)
Table 5.5.1 stores details about users, whether they are employers or job seekers.
Table 5.5.35 stores details about job seekers job application details.
CHAPTER 6
SYSTEM TESTING
Integration testing is the phase in software testing in which individual software modules
are combined and tested as a group. Integration testing is conducted to evaluate the compliance
of a system or component with specified functional requirements. It occurs after unit testing.
A testing strategy of integration testing has been used to check that the system behaves as
expected. The testing strategy was based on the functionality and the requirements of the
system. The testing table below gives a precise description of the tests that took place.
Each component of the “Job Recommendation and Filtering System” web application went
through each stage of the approached methodology. It was identified that each unit behaved
differently as a single entity and differently when it was integrated with other units in respect
of speed. The test environment of the application plays a crucial role on its performance.
Moreover, the technical specifications of the platform where the application is installed plays
a major role.
23
In system testing, integration testing passed components such as report issues, adding
project, user registration, custom fields, and tags are taken as input. The system elements are
tested as a whole. The environment and behaviour of the system and its elements is tested here.
The administrator system fulfils the objective in efficient manner. The administrator deals the
processes with less expectation of system resources and user friendly with the help of software
which takes care of the system resources.
Whenever a change in a software application is made, it is quite possible that other areas
within the application have been affected by this change. Regression testing is performed to
verify that a fixed bug hasn't resulted in another functionality or business rule violation. The
intent of regression testing is to ensure that a change, such as a bug fix should not result in
another fault being uncovered in the application. Our application “Job Recommendation and
filtering System” is tested properly then and there whenever the bugs are being fixed, to ensure
that it doesn’t affect other modules.
A test case is nothing, but a series of step executed on a product, using a predefined set
of input data, expected to produce a pre-defined set of outputs, in a given environment. It
describes “how” to implement those test cases. Test case specifications are useful as it enlists
the specification details of the items.
CHAPTER 7
SYSTEM IMPLEMENTATION
STEP 1
Unzip the downloaded file and install all the softwares in the requirements. Use pip to
install requirements1.txt and use npm to install requirements2.txt and run the setup.exe file.
STEP 2
STEP 3
To launch bug tracking tool, use the URL http://localhost:3000. It will display the login
page of bug tracking tool. Make sure the web server and the database, both are running before
using the URL, otherwise problem loading page error will be displayed.
STEP 4
If you are a job seeker, click on user and if you are new user, click user registration and
signup and complete your profile to view job recommendations and you can apply for jobs.
STEP 5
If you are an employer, click on employer registration in the index page and signup and
post jobs you can view applied candidates and generate list of applied candidates and search
required candidates in find candidates’ option.
26
SYSTEM REQUIREMENTS
Implementation of software refers to the final installation of the package in its real
environment, to the satisfaction of the intended users and the operation of the system.
The active user must be aware of the benefits of using the system.
Their confidence in the software is built up.
Proper guidance is imparted to the user so that he is comfortable in using the
application.
The user must know that for viewing the result, the server program should be running
in the server. If the server object is not up running on the server, the actual process won’t take
place.
27
CHAPTER 8
CONCLUSION AND FUTURE ENHANCEMENT
8.1 CONCLUSION
The world of computer fields is not static, it is always subject to be dynamic. The
technology which is famous today becomes outdated the very next day. To keep abstract of
technical improvements, the system may be further refined. So, it is not concluded. Yet it will
improve with further enhancements.
The job recommendation system has features that include creating user profile and the
applicants can apply for jobs, search them and view applied jobs. The employer can post jobs
and view applied candidates’ details. In this project the job seekers have job recommendation
feature (as seen in figure 9.2.9) in which NLP techniques are used and is based on skills of the
applicant. The algorithm used is count vectorizer because it is efficient when little data is
available.
Thus, the project is flexible and can be enhanced at any time with more advanced features.
Increase the quality of the software where it can handle various types of requests.
Improve job recommendations by using many algorithms for different types and
different amount of data.
Get more report generating options.
Enhance security of the project.
28
CHAPTER 9
APPENDICES
INDEX.JS
return (
<div>
<Head>
<title>Apt Job</title>
<meta name="description" content="Generated by create next app" />
<link rel="icon" href="/favicon.ico" />
</Head>
<main className="page-wrapper">
<Header />
<Container fluid className="pb-5 mb-md-4 mt-5 py-4 py-sm-5">
<Container as="section" className="mb-3 pb-2">
<Row className="gy-4 align-items-md-center">
29
<Col md={6}>
<Image
src="/images/steps.svg"
width={634}
height={486}
quality={100}
alt="Apt Job"
/>
</Col>
<Col lg={5} md={6} className="offset-lg-1">
<h2 className="mb-4">Finding a new job is now even easier!</h2>
<p className="mb-4 pb-3 fs-lg">
Login to{" "}
<strong>
<i>Apt Job</i>
</strong>{" "}
and put your details you can apply for various jobs and get
recommendations of jobs based on your profile.
</p>
<p>
Employers, post your jobs and get perfect candidates for your
jobs!{" "}
</p>
<Row>
<Col>
<Link href="/user/register">
<Button variant="primary" className="rounded-pill">
{"User Register"}{" "}
<i className="fi-chevron-right ms-2"></i>
</Button>
</Link>
</Col>
<Col>
<Link href="/employer/register">
<Button variant="primary" className="rounded-pill">
{"Employer Register"}{" "}
<i className="fi-chevron-right ms-2"></i>
</Button>
</Link>
</Col>
</Row>
</Col>
</Row>
</Container>
</Container>
</main>
<Footer />
</div>)
;}
30
PERSONALDETAILS.JS
import {
Col,
Row,
Accordion,
Form,
InputGroup,
Button,
ToastContainer,
Toast,
ToastHeader,
ToastBody,
} from "react-bootstrap";
import {
USER_UPDATE_PROFILE_RESET,
USER_CREATE_PROFILE_RESET,
} from "../../constants/userConstants";
import {
retrieveUserProfile,
updateUserProfile,
logout,
createUserProfile,
} from "../../actions/userActions";
useEffect(() => {
// dispatch(retrieveUserProfile());
if (userInfo) {
if (userInfo.isEmployer == false) {
// dispatch(retrieveUserProfile());
if (success) {
console.log("success from 1");
dispatch({ type: USER_UPDATE_PROFILE_RESET });
setText("Profile updated");
setShow(true);
// router.push("/user/profile");
} else {
if (updateError) {
setEShow(true);
console.log(updateError);
setText("Error");
} else if (createSuccess) {
dispatch({ type: USER_CREATE_PROFILE_RESET });
setText("Profile updated");
setShow(true);
// router.push("/user/profile");
} else if (createError) {
setText({ createError });
setEShow(true);
32
}
if (!userProfile?.[0] || !userProfile?.[0]?.id) {
dispatch(retrieveUserProfile());
console.log("dispatch reterieveUserProfile from 1");
} else {
setId(userProfile?.[0]?.id);
setFirstname(userProfile?.[0]?.first_name);
setLastname(userProfile?.[0]?.last_name);
setGender(userProfile?.[0]?.gender);
setAddress(userProfile?.[0]?.address);
setCity(userProfile?.[0]?.city);
setPincode(userProfile?.[0]?.pincode);
setState(userProfile?.[0]?.state);
setCountry(userProfile?.[0]?.country);
setDisabled(userProfile?.[0]?.disabled);
setPhone(userProfile?.[0]?.phone_number);
setDob(userProfile?.[0]?.date_of_birth);
if (gender === "M") {
setGenderKey("Male");
} else if (gender === "F") {
setGenderKey("Female");
} else if (gender === "O") {
setGenderKey("Others");
}
}
}
} else if (userInfo.isEmployer) {
router.push("/employer");
}
} else {
router.push("/");
}
}, [
dispatch,
router,
userProfile?.[0],
success,
updateError,
createSuccess,
createError,
]);
const valuesWithKeys = {
Male: "M",
Female: "F",
Other: "O",
};
if (!userProfile?.[0] || !userProfile?.[0]?.id) {
let user = {
first_name: firstname,
last_name: lastname,
gender: gender,
date_of_birth: dob,
phone_number: phone,
address: address,
city: city,
state: state,
pincode: pincode,
country: country,
disabled: disabled,
};
dispatch(createUserProfile(user));
console.log(user);
} else {
dispatch(
updateUserProfile(id, {
first_name: firstname,
last_name: lastname,
gender: gender,
date_of_birth: dob,
phone_number: phone,
address: address,
city: city,
state: state,
pincode: pincode,
country: country,
disabled: disabled,
})
);
console.log("Updated Profile");
}
};
return (
<>
<ToastContainer
position="top-end"
bsPrefix="toast-container p-3 position-fixed mt-5 pt-5"
>
<Toast
onClose={() => {
setShow(false);
setText("");
}}
show={show}
delay={5000}
autohide
34
>
<ToastHeader closeVariant="white" className="bg-success text-white">
<i className="fi-check-circle me-2"></i>
<span className="fw-bold me-auto">Success</span>
</ToastHeader>
<ToastBody className="text-success">{text}</ToastBody>
</Toast>
<Toast
onClose={() => {
setEShow(false);
setText("");
}}
show={eShow}
delay={5000}
autohide
>
<ToastHeader closeVariant="white" className="bg-danger text-white">
<i className="fi-x-circle me-2"></i>
<span className="fw-bold me-auto">Error</span>
</ToastHeader>
<ToastBody className="text-danger">{text}</ToastBody>
</Toast>
</ToastContainer>
{console.log("show profile toast: " + show)}
<Row className="mb-4">
<Col bsPrefix="col-lg-3 col-12">
<h2 className="h4">Personal Details</h2>
</Col>
<Col bsPrefix="col-lg-9 col-12">
{loading ? (
<h2>
<Loader />
</h2>
) : error ? (
<Message variant="danger">{error}</Message>
):(
<></>
)}
{/* {loadingUpdate ? (
<Loader />
) : errorUpdate ? (
<Message variant="danger">{error}</Message>
):(
<></>
)} */}
<Accordion>
<div className="border rounded-3 p-3">
{/* <div className="border-bottom pb-3 mb-3">
<div className="d-flex align-items-center justify-content-between">
<div className="pe-2">
35
<AccordionTitle
title="Phone Number"
displayText={phone}
eventKey="3"
/>
<Accordion.Collapse eventKey="3">
<div className="my-1">
<Form.Control
type="number"
placeholder="Phone number"
value={phone}
onChange={(e) => setPhone(e.target.value)}
required
/>
</div>
</Accordion.Collapse>
</div>
required
/>
</div>
</Accordion.Collapse>
</div>
<Accordion.Collapse eventKey="8">
<div className="my-1">
<Form.Control
type="text"
placeholder="Enter your country"
value={country}
onChange={(e) => setCountry(e.target.value)}
required
/>
</div>
</Accordion.Collapse>
</div>
<div>
<div className="d-flex align-items-center justify-content-between">
<div className="pe-2">
<Button type="submit">{"Save"}</Button>
</div>
</div>
</div>
</Form>
</div>
</Accordion>
</Col>
</Row>
</>
);
};
CHAPTER 10
REFERENCES
10.1 BOOKS
Kirill Konshin, (26 July 2018) ‘Next.js Quick Start Guide: Server-side rendering done
right’, Packt Publishing Limited, pp. 164.
William S Vincent, (10 August 2020) ‘Django for APIs: Build web APIs with Python
and Django’, Welcometocode, pp. 162.
Simon Riggs, (March 31, 2022) ‘PostgreSQL 14 Administration Cookbook’, Packt
Publishing, pp. 608.
10.2 WEBSITES
https://stackoverflow.com/
https://www.django-rest-framework.org/
https://www.postgresql.org/
https://nextjs.org/learn/basics/create-nextjs-app
https://www.youtube.com/watch?v=qw--VYLpxG4
https://www.youtube.com/watch?v=c708Nf0cHrs
https://www.youtube.com/watch?v=MFuwkrseXVE