You are on page 1of 52

WORKERS JOB PORTAL

A Project Report Submitted to the Government Arts College(Autonomous),


Coimbatore
In Fullfillment of the requirements
For the Award of Degree of
MASTER OF COMPUTER APPLICATIONS
Submitted by
SIVARAJAN R
REG. NO: 22MCA520
Under the Guidance of
Dr. R. VIDYABANU M.C.A, M.Phil., Ph.D.,
Assistant Professor

POST GRADUATE AND RESEARCH DEPARTMENT OF


COMPUTER APPLICATIONS
GOVERNMENT ARTS COLLEGE(AUTONOMOUS), COIMBATORE-641018
Re-accredited with “B++” Grade by NAAC. Affiliated to Bharathiar University

APRIL 2024
ii

DECLARATION

I here declare that this project, entitled with “WORKERS JOB PORTAL”
Submitted to the Government Arts College (Autonomous), Coimbatore in
fulfillment of the requirements for the award of the Degree of Master of
Computer Applications is a bonafide record of the original project work done by
me under the supervision and guidance of Dr.R.VIDYABANU,
MCA,M.Phil.,Ph.D., Assistant Professor, Post Graduate and Research
Department of Computer Applications, Government Arts College
(Autonomous), Coimbatore – 641018.

PLACE : Coimbatore Signature of the Candidate


DATE : (SIVARAJAN R)
22MCA520
iii

CERTIFICATE

This is to certify that the project entitle “WORKERS JOB PORTAL” is a


record of an original project work done by SIVARAJAN R (22MCA520)
Submitted to Bharathiar University in a fulfillment of the requirement for the
award of the Degree of MASTER OF COMPUTER APPLICATIONS.

Head of the Department Signature of the Guide

Submitted for the Project Viva-Voce examination held on 13-04-2024

Internal Examiner External Examiner


iv

ACKNOWLEDGEMENT

Hereby, I take this opportunity to acknowledge my deep sense of


gratitude and heartfelt thanks to our beloved Principal Dr. R. ULAGI M.Sc.
M.Phil,, Ph.D., Government Arts College (Autonomous), Coimbatore, who has
given permission to carry out the project by providing necessary and permitting
me with all facilities to complete it successfully.
I also express my sincere and profound thanks to to Head of the
Department Dr. R. A. ROSELINE M.Sc. M.Phil,. Ph. D,. Assistant Professor
and Head, Post Graduate and Research Department of Computer Applications,
Government Arts College(Autonomous), Coimbatore, for her Valuable support
and suggesstions in my project work.
I would also express my sincere gratitude to my internal guide,
Dr.R. VIDYABANU MCA., M.Phil., Ph.D., Assistant Professor, Post Graduate
and Research Department of Computer Applications, Government Arts College
(Autonomous) Coimbatore, for who shaped my project into better one with her
guidance for completion of this project.
Finally, I also express my sincere gratitude to all of my parents and
friends who helped for my career without whose sustained support, I could not
have made my debut in Computer Applications.
v

TABLE OF CONTENT

TITLE PAGE NO

DECLARATION II
CERTIFICATE III
ACKNOWLEDGEMENT IV
ABSTRACT 1
CHAPTER 1: INTRODUCTION
1.1 About the project 2
1.2 Objectives 3
1.3 Scope for Job Portals 3
CHAPTER 2: SYSTEM REQUIREMENTS
2.1 Software Requirements 4
2.2 Hardware Requirements 4
CHAPTER 3: TECHNOLOGY PLATFORMS
3.1 React.js 5
3.2 Node.js 6
3.3 Express.js 7
3.4 MongoDB 8
CHAPTER 4: SYSTEM ANALYSIS
4. 1 Literature Survery 9
4.2 Existing System 10
4.3 Proposed System 11
CHAPTER 5: PROJECT FEASIBILITY STUDY 12
5.1 Technical Feasibility
5.2 Economical Feasibility
5.3 Operational Feasibility
TITLE PAGE NO
5.4 Project timeline chart 13
vi

5.5 Analysis Model 14


Figure 1- Water Fall Model 15
CHAPTER 6: SYSTEM DESIGN
6.1 Graphical User Interface 16
6.2 Data flow Diagram 17
6.3 Data flow Diagram symbols 18
6.4 Data flow Diagarm samples 19
6.5 Class Diagram 20
Figure-2: Class Diagram
6.6 Entity Relationship model 22
Figure-3: Entity Relationship Model Diagram
6.7 Module Description.
CHAPTER 7: SYSTEM DEVELOPMENT 23
CHAPTER 8: SYSTEM TESTING AND IMPLEMENTATION 24
8.1 System Testing 26
8.2 System Implementation
CHAPTER 9 :CONCLUSION
9.1 Conclusion 27
9.2 Futue work
APPENDIX A:
1.Source Code 28
2.Sample Screen Shots 40
APPENDIX B:
BIBLIOGRAPY 43
1

ABSTRACT

In recent years, the digital revolution has transformed the way we work,
communicate, and interact. However, while many industries have embraced
technology advancements, daily wage workers, who constitute a significant
portion of the global workforce, have been largely left behind, this is due to a
lack of access to technology and the internet, as well as the informal of their
employment.

Unfortunately, despite of all the struggles and hard work many of the workers
have lost their jobs. We want to provide a solution that could make a small
difference in their lives that could make it easier to find a job. This idea would
not be useful to only the workers, but also the common people like us who need
their assist. This article addresses the idea that can be implemented to provide a
web platform for the daily wage workers to find a job that could be either
temporary or permanent based on the preference of the employee and the
employer. The technologies/ tools that we are utilizing in the implementation of
the system includes: ReactJS, Node-JS, Express JS, MongoDB.

This website offers a user-friendly interface accessible via web and mobile
devices, enabling daily wage workers to browse, apply, and secure employment
opportunities swiftly and conveniently. Empower integrates advanced search
algorithms that match job seekers with suitable job listings based on their skills,
location, and preferences, ensuring a tailored and efficient job-seeking
experience.
2

CHAPTER 1

INTRODUCTION

1.1 ABOUT THE PROJECT


The impact of COVID-19 pandemic on the daily wage workers and
migrants has been largely unsettling. Wages have and important role in
maintaining the livelihood and the well-being of the work force. There has
been a severe crisis of employment opportunities in local labour markets.
Getting work for even two days in a week is excruciating difficult. Daily
wages too, for any work possible, have dipped by half. Searching for a job
has not been an easy task for these workers due to the lockdown. Most of
the communities have shut down their entrances for outsiders to avoid as
much as the crowd possible.

Daily-wage workers like Carpenters, Electricians, Mechanics, Masons,


Cooks, Launderers, Plumbers, or even student Tutors can use this platform
to find a job in a faster and easier way. As much as we are able to do our
essential works, most of us need an assist to do the chores as we need to buy
us some time and energy to do the other jobs that we do for a living. Hence,
we can say that the need for a daily wage worker to get a job for their
survival and the need for us to get an assist in mutual. This is going to be
an extremely useful platform not only for daily-wage workers but also for
the ones who are great at their job but do not have any attractive profile and
for the ones who are willing to do a part time job for some extra money in
hand.

For this study secondary data has been collected. From the website of KSE
the monthly stock prices for the sample firms are obtained from Jan 2020 to
Dec 2022.
3

1.2 OBJECTIVES

The online job Portal System that is to be developed provides the members
with jobs information, online applying for jobs and many other facilities,
This System provides service to the job applicants to search for working
opportunities.

Job Portal will allow job provider to establish one to one relationship with
workers. This Portal will primarily focus on the posting and management of
job vacancies. This system is designed such that ultimately all vacancies
will be posted online and would offer employers the facilities to post their
vacancies online.

Job providing and job searching is not only motive of our project,
additionally we will add some extra module that notify current affairs about
labours security and empowerment.

1.3 SCOPE FOR JOB PORTALS


There are many prospects for portal sites in the Indian market because there
are more skilled individuals without jobs. Additionally, as India's growth
rate soars to a robust pace of over 7%, businesses and job providers are
experiencing a boom, meaning that an increasing number of lucrative
opportunities will become available to job seekers. Therefore, it is the ideal
time for employment portal websites to think creatively and maximise the
chances available to employees.
4

CHAPTER 2
SYSTEM REQUIREMENTS

2.1 SOFTWARE REQUIREMENTS


 Operating System: Windows 10 or Linux-based operating system (e.g.,
Ubuntu Server) for hosting backend services. Offering stability and
security.
 Database Management System: MongoDB for storing book data, user
information, and session management.
 Backend Framework: Node.js with Express.js for building RESTful
APIs and handling server-side logic.
 Frontend Framework: React.js for building interactive and responsive
user interfaces.
 Package Manager: NPM (Node Package Manager) for managing
project dependencies and packages.

2.2 HARDWARE REQUIREMENTS


The System requires the following hardware:

 RAM: 4 GB (further increase that as per requirement).


 Hard Disk: 80 GB (further increase that as per requirement)
 Display: 1024*768 True Type Color-32 Bit.
 Mouse: Any Normal Mouse.
 Keyboard: Any window Supported Keyboard.
5

CHAPTER 3

TECHNOLOGY PLATFORMS

This project is going to be implemented using the technologies:

1) ReactJS for frond-end Development(client-side),


2) MongoDB as the database,
3) NodeJS and Express JS for back-end development(server-side).

3.1 REACT JS:

ReactJS is declarative, efficient, and flexible JavaScript library for


building reusable UI components, it is an opensource, component-based frond
end library responsible only for the view layer of the application, It was created
by Jordan Walke, who was a software engineer at Facebook, It was initially
developed and maintained by Facebook and was later used in its products like
WhatsApp & Instagram. Facebook developed ReactJS in 2011 in its newsfeed
section, but it was released to the public in the month of May 2013. Today, most
of the websites are built using MVC (model view controller) architecture. In
MVC architecture, REACT is the ‘V’ which stands for view, whereas the
architecture is provided by the Redux or Flux. A ReactJS application is made up
of multiple components, each component responsible for outputting a small,
reusable piece of HTML code. The components are the heart of all React
applications, These Components can be nested with other components to allow
complex applications to be built of simple building blocks. ReactJS uses virtual
DOM based mechanism to fill data in HTML DOM. The virtual DOM works
fast as it only changes individual DOM elements instead of reloading complete
DOM every time.
6

3.2 NODE JS:

Node.js is an open source, cross-platform runtime environment for


developing server-side and networking applications. Node.js applications are
written in JavaScript, and can be run within the Node.js runtime on OS X,
Microsoft Windows, and Linux. Node.js also provides a rich library of various
JavaScript modules which simplifies the development of web applications using
Node.js to a great extent. Features of Node.js following are some of the
important features that make Node.js the first choice of software architects.

1) Asynchronous and Event Driven – All APIs of Node.js library are


asynchronous, that is, non-blocking. It essentially means a Node.js
based server never waits for an API to return data. The server moves
to the next API after calling it and a notification mechanism of Events
of Node.js helps the server to get a response from the previous API
call.
2) Very Fast – Being built on Google Chrome’s V8 JavaScript Engine,
Node.js library is very fast in code execution. Single Threaded but
Highly Scalable – Node.js uses a single threaded model with event
looping. Event mechanism helps the server to respond in a
nonblocking way and makes the server highly scalable as opposed to
traditional servers which create limited to handle requests. Node.js
uses a single threaded program and the same program can provide
service to much larger number of requests than traditional servers like
Apache HTTP Server.
3) No Buffering - Node.js applications never buffer any data. These
applications simply output the data in chunks,
4) License – Node.js is released under the MIT license.
7
8

3.3 EXPRESS JS:

Express JS is a small framework that works on top of Node web server


functionality to simplify its APIs and add helpful new features. It makes it easier
to organize your application’s functionality with middleware and routing. It
adds helpful utilities to Node HTTP objects and facilitates the rendering of
dynamic HTTP objects.

Why Express?

Express makes the development of Node application very easy


and it is very simple to use. It provides a simple and efficient
way to build web applications and APIs using JavaScript. It
helps Node to handling routes, requests, and responses, making
it easier for you to create robust and scalable applications. As it
very flexible, lightweight and easy to learn and contains a ton of
middleware option making it an excellent choice to learn and
use Express in your application.

3.4 MONGO DB:

MongoDB is a document-oriented NoSQL database system that provides


high scalability, flexibility, and performance. Unlike standard relational
databases, MongoDB stores data in a JSON document structure form. This
makes it easy to operate with dynamic and unstructured data and MongoDB is
an open-source and cross-platform database System.

Database

 Database is a container for collections.


 Each database gets its own set of files.
 A single MongoDB server can have multiple databases.
9

Why MongoDB?

Document-Oriented Storage – Data is stored in the form o JSON


documents.

 Index of any attribute:


o Indexing in MongoDB allows for faster data retrieval by
creating a searchable structure on selected attributes,
optimizing query performance.
 Replication and high availability:
o MongoDB’s multiple sets ensure data redundancy by
maintaining multiple copies of the data, providing fault
tolerance and continuous availability even in case of
server failures.
 Auto-Sharding:
o Auto-sharding in MongoDB automatically distributes
data across multiple servers, enabling horizontal scaling
and efficient handling of large datasets.
 Rich queries:
o MongoDB supports complex queries with a variety of
operators, allowing you to retrieve, filter, and manipulate
data in flexible and powerful manner.
 Fast in-place updates:
o MongoDB efficiently updates documents directly in their
place, minimizing data movement and reducing write
overhead.
 Professional support by MongoDB:
10

o Mongo offers expert technical support and resources to


help users with any issues or challenges they may
encounter during their database operations.

CHAPTER 4

SYSTEM ANALYSIS

4.1 LITERATURE SURVEY

Hiring is one of the important challenges in the context of online labour


marketplace. Unlike traditional hiring, where workers are hired either as a full-
time employee or as a contractor, hiring from online marketplace are done for
individual jobs of short duration, Since the time of Covid and the lockdown,
there has been a severe crisis of employment opportunities in local labour
markets. In a three-month extensive field study undertaken by a research team
at the Centre for New Economics Studies, OP Jindal Global University, have
documented the stories of over 200 daily wage workers through a randomised
survey in mazdoor mandis in Lucknow and Pune. Getting work for even two
days in a week is excruciating difficult for the daily wage workers. Daily wages
too, for any work possible, have dipped by half, there are lot of websites like
“helper4u.in”, “www.bookmybai.com”, “workindia.in”, etc for hiring temporary
workers or daily wage workers where the daily wage workers can be hired by
anyone. The social phenomenon of short-term hiring of freelancers in
crowdsourcing platforms in increasing very rapidly to achieve flexibility and
cost savings. One of the Survey found that amount of time spent by a worker for
selecting a task is comparable with the time spent on working on the task.

Another firm conducted a survey to understand the kind of recommendation


workers prefer while performing tasks on a micro-task matching. In supply
driven marketplaces each freelancer advertises his/her skills and capabilities
with confidence, add details of his experience, etc, as services to attract clients
11

and compete with other professional in the pool. Clients will search and choose
their favourite one from the services.
12

4.2 EXISTING SYSTEMS

In most of the scenarios, an idea like this implemented through agencies


where the quotes a higher price to the person hiring and pay the worker a
lesser amount. This makes it and advantage to the agency alone and makes
it a disadvantage to both the person hiring and the person getting hired.
All these below websites use the concept of agencies where the admin of
the enterprise get to interview the worker and quote the price:

1) https://www.bookmybai.com/ - In this website, the complete control of


the worker is in the hands of the agency. They have the policy that says
that the employer can pa the money only if they are satisfied with the
performance of the workers.
2) https://www.jobnukkad.com/ - In this website, although they are not
providing the option of maid replacement or full payment only if they
are satisfied with the worker, the user has to pay a minimum amount of
Rs. 499/- to make use of the website. This website usage is restricted to
the cities Mumbai, Delhi, Gurgaon, Noida, Pune and Bangalore.
3) https://www.indianmaidagency.in/ - This website only provides the
option to hiring a maid and does not provide an option to hire the
workers for other roles such as carpenters, plumbers, electricians, etc…
13

4.3 PROPOSED SYSTEM

It is going to be a complete website that can be used by the daily wage


workers to find a job and the employers (The customer or the user who is
looking for an assist) who can hire the worker. The website primarily gives two
options:

1) To login as a worker.
2) To login as an employer.

All the daily wage worker has to do is to create an account by using their email
ID and password and undergo an Verification process for security reasons,
provide their details such as Name, Location, Age, Phone number, Religion,
Photo, Gender, comfortable languages, experience etc. The employer can create
an account using their email ID and password and undergo and captcha
verification process. Once the employer is logged in, he/she can filter the
available workers based on their requirement of Roles (Such as carpenter,
electrician, and plumber etc.), Language, Location, Age, Gender, Experience,
etc, Once the worker is chosen, the user gets an option to communicate with the
worker either through the website or through their contact number and make the
negotiations. Based on their understandings and preferences the worker can be
either hired for a temporary period or as a fulltime employee.
14

CHAPTER 5

PROJECT FEASIBILITY STUDY

5.1 TECHNICAL FEASIBILITY

Technical feasibility study is concerned with specifying equipment


and software that will successfully satisfy the user requirement; the
technical needs of the system may vary considerably. The facility to
produce outputs in a given time. Our project is a web-based application
which is based on client-server-based application. In this application
every page as output is render from server to client so it is necessary that
the page should be rendered in time. For this I have avoided more and
more code in the page- load event.

5.2 ECONOMICAL FEASIBILITY

Economical-feasibility is the measure to determine the cost and


benefit of the proposed system. A project is economical feasible which is
under the estimated cost for its development. These benefits and costs
may be tangible or intangible. Job Portal is the cost-effective project in
which there is less possibility of intangible cost so there is no difficulty to
determine the cost of the project.

5.3 Operational Feasibility

Operation feasibility is used to check whether the project is


operationally feasible or not. Our project is mainly different from the other
system because of its web-support feature. So the measure for operational
feasibility is something different from other system. Generally the
operational feasibility is related to organization aspects. The change
determination is as such that early product were either a man or group of
15

men or the jobs based manual but now a day with the advent of Internet
technology.
16
5. 4 PROJECT TIMELINE CHART
17

5.5 ANALYSIS MODEL

The model that is basically being followed is the WATER FALL


MODEL, which states that the phases are organized in a linear order. First all
the feasibility study is done. Once that part is over the requirement analysis and
project planning begins. If system exists one and modification and addition of
new module is needed, analysis of present system can be used as basic model.

The design starts after the requirement analysis is complete and the
coding begins after the design is complete, Once the programming is completed,
the testing is done. In this model the sequence of activities performed in a
software development project are: -

 Requirement Analysis
 Project Planning
 System design
 Coding
 Unit testing
 System integration & testing

Here the linear ordering of these activities is critical. End of the phase and the
output of one phase is the input of the other phase. The output of each phase is
to be consistent with the overall requirement of the system. Some of the
qualities of spiral model are also incorporated like after the people concerned
with the project review completion of each of the phase the work done.

WATER FALL MODEL was being chosen because all requirements


were known beforehand and the objective of our software development is the
computerization/automation of an already existing manual working system.
18

Figure 1- Water Fall Model


19

CHAPTER 6
SYSTEM DESIGN
6.1 GRAPHICAL USER INTERFACE
In the flexibility of the uses, the interface has been developed a graphics
concept in mind, associated through a browsers interface. The GUI’S at the top
level have been categorized as
1. Administrative user interface
2. The operational or generic user interface
The administrative user interface concentrates on the consistent information that
is practically, part of the organizational activities and which needs proper
authentication for the data collection. The interfaces help the administrations
with all the transactional states like Data insertion, Data deletion and Date
update along with extensive data search capabilities.
The Operational or generic user interface helps the users upon the system in
transactions through the existing data and required services. The operational
user interface also helps the ordinary users in managing their own information
helps the ordinary users in managing their own information in a customized
manner as per the assisted flexibilities.
20

6.3 DATA FLOW DIAGRAMS


One tool for analysing and describing the flow of data across a system is a data
flow diagram. These serve as the main instrument and the foundation for all
other system components. The term "logical data flow diagrams" refers to them.
The real tools and data flow across individuals, departments, and workstations
are depicted in the physical data flow diagrams. Actually, a collection of data
flow diagrams is all that is needed to fully describe a system. The data flow
diagrams are developed using two widely used notations: Yourdon, Gane, and
Sarson notation. Every element in a DFD has a label with a meaningful name.
An additional number that will be used for identification further identifies the
process. There are various stages involved in the development of DFDs.
The top-lever diagram is often called as context diagram. It consists a single
process bit, which plays vital role in studying the current system. The process in
the context level diagram is exploded into other process at the first level DFD.

The idea behind the explosion of a process into more process is that
understanding at one level of detail is exploded into greater detail at the next
level. This is done until further explosion is necessary and an adequate amount
of detail is described for analyst to understand the process.

Larry Constantine first developed the DFD as a way of expressing


system requirements in a graphical form, this leads to the modular design.

A DFD is also known as a “bubble Chart” has the purpose of


clarifying system requirements and identifying major transformations that will
become programs in system design.
21

6.4 DFD SYMBOLS:


In the Data Flow Diagram, there are four Symbols
1. A Rectangle defines a source(originator) or destination of system data.
2. An Arrow identifies data flow. It is the pipeline through which the
information flows.
3. A Circle or a bubble represents a process that transforms incoming data
flow into outgoing data flows.

Process that transforms data flow.

a
Source or Destination of data

Data flow
22

6.5 0th Level Data flow Diagram’s

Worker Provider

Search

Job Portal
23

1st Level Data flow Diagram’s

Worker Provider

Search Application Post


Accept

Job Portal
status Deny

Search Services

Admin
24

6.6 CLASS DIAGRAM

Figure 4 – Class
Diagram
25

6.7 Entity Relationship


model

Portal

Figure 5 – Entity Relationship model


26

6.7 MODULE DESCRIPTION WITH ALL FUNCTIONALITIES


The system after careful analysis has been identified to be presented with the
following modules:
The modules involved are:
 Job Seeker
 Job Provider
 Search
 Report
 Authentication
JOB SEEKER
In this module Job Seeker register himself and upload his credentials
and fill the profile given by the admin and after login he/she would search for
the appropriate jobs and they could contact the job provider through email or
phone calls.
JOB PROVIDER
In this module job Provider register himself and after login he/she
could add new job and he/she could search for the job seekers on various
category and they can offer job to job seeker according to their profile and they
can also see the response from job seekers through mail or by phone call.
SEARCH
This module allows job seekers to search for jobs by keyword,
location, and other criteria.
REPORTS
In this module users are allowed to generate and access various reports
related to their job search activity, application status, or portal usage. The
purpose of the report module is to provide users with insights and data that can
be help them track their progress, evaluate their job search strategy, and make
informed decisions about their next steps.
AUTHENTICATION
This module plays a crucial role in ensuring the security and privacy
of both job seekers and employers. This portal should have a flexible
verification process that allows users to authenticate their identity using
27

alternative methods, such as temporary accommodation details, references from


previous employers
CHAPTER 7
SYSTEM DEVELOPMENT

1. Development tools:
 Integrated Development Environment (IDE): Visual Studio Code
for writing and debugging code.
 Git: Version control system for tracking changes in codebase,
collaboration, and managing source code.
 Node.js: JavaScript runtime environment for executing server-side
code.
 NPM (Node Package Manager): Package manager for installing
and managing project dependencies.
 MongoDB Compass: GUI tool for interacting with MongoDB
databases during development.
2. Backend Requirements:
 Node.js: JavaScript runtime environment for building the backend
server.
 Express.js: Web application framework for Node.js to create
RESTful APIs and handle HTTP requests.
 MongoDB: NoSQL database for storing product data, user
information, and session management.
 Mongoose: MongoDB object modelling tool for Node.js to interact
with MongoDB databases.
3. Frontend Requirements:
 React.js: JavaScript library for building user interfaces and
frontend components.
 React Router: Library for handling client-side routing in React
applications.
28

 Axios: HTTP client for making API requests from the frontend to
the backend server.
 Redux (optional): State management library for managing
application state in large-scale React applications.
4. Authentication and Authorization:
 JSON Web Tokens (JWT): Secure token-based authentication
mechanism for verifying user identity and authorizing access to
protected resources.
5. Deployment Tools:
 AWS: Cloud hosting platforms for deploying and scaling the
application in production environments.
6. Testing and Quality Assurance:
 React Testing Library or Enzyme: Libraries for testing React
components and user interfaces.
7. Other Tools and Libraries:
 dotenv: Library for loading environment variables from .env files
into Node.js applications.
 bcrypt: Library for hashing passwords securely before storing them
in the database.
 nodemon: Utility for automatically restarting the Node.js server
when changes are detected in the codebase during development.
These software requirements provide the necessary tools and libraries for
developing the Library Management System, covering both backend and
frontend development, authentication, payment integration, deployment, testing,
and quality assurance.
29

CHAPTER 8
SYSTEM TESTING AND IMPLEMENTATION

8.1 SYSTEM TESTING


1. Requirements Verification: Ensure that all functional and non-
functional requirements specified for the system are met.
2. Unit Testing: Test individual components of the system, including
backend APIs, frontend components, and database interactions, using
tools like Jest, Mocha, or React Testing Library.
3. Integration Testing: Test the integration between different modules
and components of the system to ensure they work together as
expected.
4. End-to-End Testing: Perform end-to-end tests to simulate real user
scenarios and verify that all system components function correctly
together. Tools like Cypress or Selenium can be used for automated
end-to-end testing.
8.2 SYSTEM IMPLEMENTATION
1. Deployment Planning: Plan the deployment strategy, including server
setup, database configuration, and environment variables.
2. Environment Setup: Set up production and staging environments for
deploying and testing the system.
3. Database Migration: Migrate the database schema and seed initial data
if necessary.
4. Backend Deployment: Deploy backend services, including Node.js
server and Express.js APIs, on the selected hosting platform (AWS) using
Docker containers or traditional server setup.
5. Frontend Deployment: Build the frontend React.js application and
deploy static files to a web server or CDN (Content Delivery Network)
for serving to users.
6. Configuration: Configure environment variables, API endpoints, and
other settings for the deployed environments.
30

CHAPTER 9
9.1 CONCLUSION
It has been a great pleasure for me to work on this exciting and challenging
project. This project proved good for me as its practical knowledge in MERN
(MongoDB, Express.js, React.js and Node.js), and also about all handling
procedure with “WORKERS JOB PORTAL”. It also provides knowledge about
the latest technology used in developing web enables application and client
server technology that will be great demand in today’s web Development
Environment. This will provide better opportunities and guidance in future in
developing projects independently.

9.2 FUTURE WORK


This System being web-based and an undertaking of Cyber Security Division,
needs to be thoroughly tested to find out any security gaps.
A console for the data centre may be made available to allow the personnel to
monitor on the sites which were cleared for hosting during a particular period.
Moreover, it’s just a beginning, further the system may be utilized in various
types of auditing operation viz. Network auditing or similar process /
workflow-based applications.
31

SOURCE CODE
SIGN UP PAGE
import React, { useState } from "react";
import { useForm } from "react-hook-form";
import CreatableSelect from "react-select/creatable";

const Signup = () => {


const [selectedOptions, setSelectedOptions] = useState(null);
const {register,reset,handleSubmit,formState: { errors },
} = useForm();
const onSubmit = (data) => {
fetch("http://localhost:3000/post-user", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify(data),
})
.then((res) => res.json())
.then((result) => {
console.log(result);
if (result.acknowledged === true) {
alert("User Registered Successfully"); }
reset();
});
};
32

<form onSubmit={handleSubmit(onSubmit)}>
{/* row 1 first name and last name */}
<div className="flex -mx-3">
<div className="w-1/2 px-3 mb-5">
<label for="" className="text-xs font-semibold px-1">
First name
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
{/* <i class="mdi mdi-account-outline text-gray-400 text-lg"></i> */}
</div>
<input
type="text"
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="Ex: Sivarajan"
{...register("firstName")}
/>
</div>
</div>
<div className="w-1/2 px-3 mb-5">
<label for="" className="text-xs font-semibold px-1">
Last name
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
33

{/* <i class="mdi mdi-account-outline text-gray-400 text-lg"></i> */}


</div>
<input
type="text"
{...register("lastName")}
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="Ex: Rathinavel"
/>
</div>
</div>
</div>
{/* row 2 age and pno*/}
<div className="flex -mx-3">
<div className="w-1/2 px-3 mb-5">
<label for="" className="text-xs font-semibold px-1">
Age
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-account-outline text-gray-400 text-lg"></i>
</div>
<input
type="text"
{...register("age")}
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
34

placeholder="Ex:22"
/>
</div>
</div>
<div className="w-1/2 px-3 mb-5">
<label for="" className="text-xs font-semibold px-1">
Phone No
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-account-outline text-gray-400 text-lg"></i>
</div>
<input
type="text"
{...register("phoneNumber")}
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="Ex: 93xxxxxx04"
/>
</div>
</div>
</div>
{/* row 3 user role */}
<div className="flex -mx-3">
<div className="w-full px-3 mb-12">
<label for="" className="text-xs font-semibold px-1">
User role
35

</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-lock-outline text-gray-400 text-lg"></i>
</div>
<select
{...register("jobRole")}
className="w-full -ml-10 pl-10 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
>
<option value="">Select your role</option>
<option value="provider">Job Provider</option>
<option value="seeker">Job Seeker</option>
</select>
</div>
</div>
</div>
{/* row 4 skill and experience level */}
<div className="flex -mx-3">
<div className="w-1/2 px-3 mb-5">
<label for="" className="text-xs font-semibold px-1">
Skill
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-account-outline text-gray-400 text-lg"></i>
36

</div>
<input
type="text"
{...register("skill")}
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="Ex:Carpenter"
/>
</div>
</div>
<div className="w-1/2 px-3 mb-5">
<label for="" className="text-xs font-semibold px-1">
Experience Level
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-account-outline text-gray-400 text-lg"></i>
</div>
<select
{...register("experienceLevel")}
className="w-full -ml-10 pl-10 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
>
<option value="">Select your Level</option>
<option value="fresher">Fresher</option>
<option value="intermediate">Intermediate</option>
<option
value="experienced">Experienced</option></select></div></div></div>
37

<div className="w-full px-3 mb-5">


<label for="" className="text-xs font-semibold px-1">
Email
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-email-outline text-gray-400 text-lg"></i>
</div>
<input
{...register("email")}
type="email"
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="Ex:user@gmail.com"
/>
</div>
</div>
</div>
{/* row 7 Password*/}
<div className="flex -mx-3">
<div className="w-full px-3 mb-12">
<label for="" className="text-xs font-semibold px-1">
Password
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
38

<i class="mdi mdi-lock-outline text-gray-400 text-lg"></i>


</div>
<input
{...register("password")}
type="password"
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="************"
/>
</div>
</div>
</div>
{/* row 8 Button */}
<div className="flex -mx-3">
<div className="w-full px-3 mb-5">
<button className="block w-full max-w-xs mx-auto bg-blue hover:bg-indigo-
700 focus:bg-indigo-700 text-white rounded-lg px-3 py-3 font-semibold">
REGISTER NOW
</button> </div> </div> </form>
39

LOGIN PAGE
import React, { useState } from "react";
import { useForm } from "react-hook-form";
import CreatableSelect from "react-select/creatable";
<div>
<form action="">
<div className="flex -mx-3">
<div className="w-full px-3 mb-5">
<label for="" className="text-xs font-semibold px-1">
Email
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-email-outline text-gray-400 text-lg"></i>
</div>
<input
type="email"
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="username@gmail.com"
/>
</div>
</div>
</div>
<div className="flex -mx-3">
<div className="w-full px-3 mb-12">
<label for="" className="text-xs font-semibold px-1">
40

Password
</label>
<div className="flex">
<div className="w-10 z-10 pl-1 text-center pointer-events-none flex items-
center justify-center">
<i class="mdi mdi-lock-outline text-gray-400 text-lg"></i>
</div>
<input
type="password"
className="w-full -ml-10 pl-10 pr-3 py-2 rounded-lg border-2 border-gray-200
outline-none focus:border-indigo-500"
placeholder="************"
/>
</div>
</div>
</div>
<div className="flex -mx-3">
<div className="w-full px-3 mb-5">
<button className="block w-full max-w-xs mx-auto bg-blue hover:bg-indigo-
700 focus:bg-indigo-700 text-white rounded-lg px-3 py-3 font-semibold">
LOGIN
</button>
</div>
</div>
41

HOME PAGE
import React, { useEffect, useState } from "react";
import Banner from "../Components/Banner";
import Card from "../Components/Card";
import Jobs from "../Pages/Jobs";
import Sidebar from "../sidebar/Sidebar";
import NewsLetter from "../Components/NewsLetter";

const Home = () => {


const [selectedCategory, setSelectedCategory] = useState(null);
const [jobs, setJobs] = useState([]);
const [isLoading, setIsLoading] = useState(true);
const [currentPage, setCurrentPage] = useState(1);
const itemsPerPage = 6;

// Fetching data from json file


useEffect(() => {
setIsLoading(true);
fetch("http://localhost:3000/all-jobs")
.then((res) => res.json())
.then((data) => {
// console.log(data)
setJobs(data);
setIsLoading(false);
});
}, []);
42

//category filtering
if (selected) {
filteredJobs = filteredJobs.filter(
({
jobLocation,
maxPrice,
experienceLevel,
salaryType,
employmentType,
postingData,
}) =>
jobLocation.toLowerCase() === selected.toLowerCase() ||
parseInt(maxPrice) <= parseInt(selected) ||
postingData >= selected ||
experienceLevel.toLowerCase() === selected.toLowerCase() ||
salaryType.toLowerCase() === selected.toLowerCase() ||
employmentType.toLowerCase() === selected.toLowerCase()
);
// console.log(filteredJobs);
}
//slice the data based on current page
const { startIndex, endIndex } = calculatePageRange();
//-------------------slicing the no of the items would displaying on the
screen-----------------------------
filteredJobs = filteredJobs.slice(startIndex, endIndex);
return filteredJobs.map((data, i) => <Card key={i} data={data} />);
}; const result = filteredData(jobs, selectedCategory, query, newQuery);
43

SAMPLE SCREEN SHOTS


REGISTRATION PAGE

Figure-6 Registration page

LOGIN PAGE

Figure-7 Login page


44

JOB POSTING BY PROVIDER

Figure 8: job posting by a provider

VIEWING JOB POSTED BY THE PROVIDER

Figure-9: Job provider’s job viewing page after job registration.


45

WORKER JOB APPLY SECTION

Figure -10: In this section seeker can find job by searching according to their
skills.
46

REFERENCES
Book
 VASAN SUBRAMANIAN - Pro MERN Stack (Full Stack Web
App Development with Mongo Express, React, and Node) Second
Edition

Websites
 https://www.geeksforgeeks.org/mern-stack/
 https://www.mongodb.com/docs/drivers/node/
 https://nodejs.org/docs/latest/api/
 https://tailwindcss.com/
 http://www.youtube.com/@BroCodez
 http://www.youtube.com/@Balachandra_in
 http://www.youtube.com/@JV/Lcode

You might also like