Professional Documents
Culture Documents
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.
CERTIFICATE
ACKNOWLEDGEMENT
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
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
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.
CHAPTER 2
SYSTEM REQUIREMENTS
CHAPTER 3
TECHNOLOGY PLATFORMS
Why Express?
Database
Why MongoDB?
CHAPTER 4
SYSTEM ANALYSIS
and compete with other professional in the pool. Clients will search and choose
their favourite one from the services.
12
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
men or the jobs based manual but now a day with the advent of Internet
technology.
16
5. 4 PROJECT TIMELINE CHART
17
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.
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
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.
a
Source or Destination of data
Data flow
22
Worker Provider
Search
Job Portal
23
Worker Provider
Job Portal
status Deny
Search Services
Admin
24
Figure 4 – Class
Diagram
25
Portal
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
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.
SOURCE CODE
SIGN UP PAGE
import React, { useState } from "react";
import { useForm } from "react-hook-form";
import CreatableSelect from "react-select/creatable";
<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
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
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";
//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
LOGIN PAGE
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