Project Overview: Job Portal System
1.
Project Title:
Online
Job Portal System
2.
Introduction:
A Job
Portal System is a web-based application designed to connect job seekers
with employers. The platform allows job seekers to browse and apply for
jobs, while employers can post job listings and review applications. The system
facilitates the recruitment process by providing features such as resume
uploads, job filtering, and application tracking.
3.
Objectives:
- To
provide a centralized platform for job seekers and recruiters.
- To
enable job seekers to search, apply, and track job applications.
- To
allow employers to post job vacancies and manage applications.
- To
simplify the hiring process using automated workflows.
- To
provide filters for searching jobs based on skills, experience, and
location.
4.
Features:
For Job
Seekers:
- User
registration and profile creation
- Resume
upload and management
- Job
search with filters (location, experience, skills, salary)
- Job
application submission and tracking
- Notification
alerts for new job postings and application status
For
Employers:
- Employer
registration and profile creation
- Job
posting and management
- Searching
and filtering applicants based on skills and experience
- Reviewing
resumes and contacting candidates
- Shortlisting
and rejecting applications
Admin
Panel:
- Managing
users (job seekers and employers)
- Approving
or rejecting job postings
- Moderating
content and handling reports
- Generating
analytics and reports on job trends
5.
Technology Stack:
- Frontend:
HTML, CSS, JavaScript (React.js or Vue.js)
- Backend: PHP
(Laravel) / Node.js / Python (Django)
- Database:
MySQL / PostgreSQL
- Authentication: JWT
/ OAuth
- Hosting: AWS
/ Firebase / DigitalOcean
6.
Expected Outcome:
- A
functional Job Portal with an interactive UI.
- Secure
authentication for job seekers and employers.
- A
dynamic job search feature to improve user experience.
- Efficient
job posting and application tracking for employers.
- Data
insights for admin to analyze job market trends.
Scope and
Features of Job Portal Project
1. Scope
of the Job Portal System
The Job
Portal System aims to streamline the job search and recruitment process by
providing a unified platform where job seekers and employers can
interact efficiently. The system will enable job seekers to find and
apply for relevant jobs while allowing employers to post job vacancies,
manage applications, and hire suitable candidates.
Scope
Includes:
1.
User Authentication & Role-Based Access
o
Job seekers, employers, and admins will have
different access levels.
o
Secure login and registration with email/password
or third-party OAuth (Google, LinkedIn, etc.).
o
Password reset and account verification.
2.
Job Seeker Functionalities
o
Profile creation with personal details, skills, and
experience.
o
Resume upload and management.
o
Search jobs using filters (category, location,
salary, experience, company).
o
Save jobs for later applications.
o
Apply for jobs with a single click.
o
View application history and track job status.
o
Receive job alerts and notifications.
3.
Employer Functionalities
o
Profile setup with company details.
o
Post job listings with required skills, salary,
location, and experience.
o
View and manage job applications.
o
Shortlist or reject applicants.
o
Download resumes and contact candidates.
o
Manage job listings (edit, update, or delete jobs).
4.
Admin Panel
o
Manage users (job seekers and employers).
o
Approve or reject job postings.
o
Moderate job listings and applications.
o
View reports and analytics on job market trends.
o
Manage categories, industries, and locations.
5.
Advanced Features (Optional Enhancements)
o
AI-based job recommendations.
o
Resume parsing and automated matching.
o
Video interview scheduling.
o
Online skill assessments.
o
Application tracking system (ATS) for recruiters.
o
Chat system for communication between job seekers
and employers.
o
Subscription-based premium features for job seekers
and recruiters.
2.
Detailed Features of the Job Portal System
A. User
Management
- User
Registration and Login
- Sign
up using email and password.
- OAuth-based
login (Google, LinkedIn, etc.).
- Forgot
password and account recovery options.
- Profile
Management
- Job
seekers can create and update their profiles.
- Employers
can manage their company profiles.
- Profile
completeness indicator.
B. Job
Seeker Features
- Job
Search & Filtering
- Search
jobs using job title, keywords, company name.
- Advanced
filters: location, industry, job type (full-time, part-time, remote).
- Sorting
jobs by relevance, latest, or salary.
- Job
Application
- One-click
application for jobs.
- Resume
and cover letter submission.
- Track
application status (applied, shortlisted, rejected).
- Saved
jobs for future applications.
- Job
Alerts & Notifications
- Email
and SMS notifications for new jobs.
- Dashboard
notifications for job status updates.
C.
Employer Features
- Job
Posting & Management
- Employers
can post job listings with detailed descriptions.
- Add
job requirements (skills, salary, experience).
- Edit
or delete job postings.
- Application
Management
- View
list of applicants for each job.
- Filter
applicants based on experience and skills.
- Download
resumes and contact shortlisted candidates.
- Company
Branding
- Employers
can add company profiles and logos.
- Featured
job postings for premium companies.
D. Admin
Panel
- User
Management
- View
and manage job seekers and employers.
- Block/unblock
or delete users.
- Job
Posting Moderation
- Approve
or reject job listings.
- Detect
and remove spam job postings.
- Reports
& Analytics
- Monitor
job application trends.
- Generate
reports on the most popular job categories.
- Insights
on job market trends.
Modules
of Job Portal System with Functionalities and Database Tables
A Job
Portal System consists of multiple modules, each handling a specific aspect
of the platform. Below are the main modules along with their functionalities
and the database tables required for each.
1. User
Management Module
Functionalities:
- User
registration (Job Seekers, Employers, and Admins).
- Login/logout
system.
- Profile
management (update name, email, contact info, profile picture, etc.).
- Role-based
access (job seeker, employer, admin).
- Forgot
password and account recovery.
Database
Tables:
users
Table (Stores user details)
Column
Name |
Data
Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Unique
User ID |
name |
VARCHAR(255) |
Full
Name |
email |
VARCHAR(255) |
Email
Address (Unique) |
password |
VARCHAR(255) |
Encrypted
Password |
role |
ENUM('job_seeker',
'employer', 'admin') |
User
Type |
status |
ENUM('active',
'inactive') |
Account
Status |
created_at |
TIMESTAMP |
Account
Creation Date |
updated_at |
TIMESTAMP |
Last
Profile Update |
2. Job
Seeker Module
Functionalities:
- Profile
creation and editing.
- Upload
resume and manage documents.
- Search
for jobs using filters.
- Apply
for jobs.
- Track
application status.
- Save
favorite jobs for later.
Database
Tables:
job_seeker_profiles
Table (Stores job seekers' information)
Column
Name |
Data Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Profile
ID |
user_id |
INT (FK
- users.id) |
Job
Seeker’s User ID |
resume |
VARCHAR(255) |
Path to
Resume File |
skills |
TEXT |
List of
Skills |
experience |
INT |
Years
of Experience |
location |
VARCHAR(255) |
Preferred
Work Location |
created_at |
TIMESTAMP |
Profile
Creation Date |
updated_at |
TIMESTAMP |
Last
Profile Update |
saved_jobs
Table (Stores saved job listings by job seekers)
Column
Name |
Data
Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Saved
Job ID |
user_id |
INT (FK
- users.id) |
Job
Seeker’s User ID |
job_id |
INT (FK
- jobs.id) |
Saved
Job ID |
created_at |
TIMESTAMP |
Date
Saved |
3.
Employer Module
Functionalities:
- Company
profile creation.
- Post
job listings.
- Edit
or delete job listings.
- View
applications received.
- Shortlist
or reject applicants.
- Contact
applicants.
Database
Tables:
employers
Table (Stores employer details)
Column
Name |
Data
Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Employer
ID |
user_id |
INT (FK
- users.id) |
Employer's
User ID |
company_name |
VARCHAR(255) |
Company
Name |
industry |
VARCHAR(255) |
Industry
Type |
location |
VARCHAR(255) |
Company
Location |
website |
VARCHAR(255) |
Company
Website |
created_at |
TIMESTAMP |
Profile
Creation Date |
updated_at |
TIMESTAMP |
Last
Profile Update |
4. Job
Management Module
Functionalities:
- Employers
can post jobs.
- Jobs
are categorized by industry, location, salary, and experience.
- Job
seekers can search for jobs using filters.
- Jobs
can be marked as active/inactive.
Database
Tables:
jobs
Table (Stores job postings)
Column
Name |
Data
Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Job ID |
employer_id |
INT (FK
- employers.id) |
Employer
Posting the Job |
title |
VARCHAR(255) |
Job
Title |
description |
TEXT |
Job
Description |
skills_required |
TEXT |
Required
Skills |
location |
VARCHAR(255) |
Job Location |
salary_range |
VARCHAR(255) |
Salary
Details |
experience_required |
INT |
Required
Experience in Years |
status |
ENUM('active',
'inactive') |
Job
Status |
created_at |
TIMESTAMP |
Job
Posting Date |
updated_at |
TIMESTAMP |
Last
Updated Date |
5. Job
Application Module
Functionalities:
- Job
seekers can apply for jobs.
- Employers
can view applications.
- Employers
can accept/reject applications.
- Job
seekers can track application status.
Database
Tables:
job_applications
Table (Stores job applications)
Column
Name |
Data Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Application
ID |
job_id |
INT (FK
- jobs.id) |
Applied
Job ID |
user_id |
INT (FK
- users.id) |
Job
Seeker’s User ID |
status |
ENUM('applied',
'shortlisted', 'rejected') |
Application
Status |
created_at |
TIMESTAMP |
Application
Date |
updated_at |
TIMESTAMP |
Last
Update Date |
6.
Notifications Module
Functionalities:
- Notify
job seekers about new job postings.
- Notify
employers when someone applies for their job.
- Send
updates about application status.
Database
Tables:
notifications
Table (Stores notifications)
Column
Name |
Data
Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Notification
ID |
user_id |
INT (FK
- users.id) |
Receiver’s
User ID |
message |
TEXT |
Notification
Message |
status |
ENUM('unread',
'read') |
Read
Status |
created_at |
TIMESTAMP |
Notification
Time |
7. Admin
Management Module
Functionalities:
- Manage
users (activate/deactivate accounts).
- Moderate
job postings (approve/reject).
- View
site analytics and reports.
Database
Tables:
admin_actions
Table (Stores admin activities)
Column
Name |
Data
Type |
Description |
id |
INT
(PK, AUTO_INCREMENT) |
Action
ID |
admin_id |
INT (FK
- users.id) |
Admin
User ID |
action |
TEXT |
Admin
Action Description |
created_at |
TIMESTAMP |
Action
Date |
Conclusion
This Job
Portal System consists of 7 main modules that collectively allow job
seekers and employers to interact efficiently. Each module has its own
functionalities and corresponding database tables to store
structured data. The admin panel ensures smooth operation by managing
user activities and moderating job postings.
ER diagram
📂 Project Directory Structure
job-portal/
│── 📂 assets/ # Static files (CSS,
JavaScript, Images)
│ ├── 📂 css/
# CSS stylesheets
│ ├── 📂 js/
# JavaScript files
│ ├── 📂 images/
# Images and icons
│── 📂 database/ # Database-related files
│ ├── db_connection.php # Database connection file
│ ├── migrations.sql # SQL script to create tables
│── 📂 includes/ # Common PHP files
│ ├── header.php # Common header for all pages
│ ├── footer.php # Common footer for all pages
│ ├── sidebar.php # Sidebar menu (if needed)
│ ├── navbar.php # Navigation bar
│── 📂 auth/ # Authentication-related files
│ ├── login.php # User login
│ ├── register.php # User registration
│ ├── logout.php # Logout functionality
│── 📂 employer/ # Employer-related pages
│ ├── dashboard.php # Employer dashboard
│ ├── post_job.php # Post a new job
│ ├── manage_jobs.php # Edit/Delete posted jobs
│ ├── view_applicants.php # View job applications
│── 📂 jobseeker/ # Job Seeker-related pages
│ ├── dashboard.php # Job seeker dashboard
│ ├── search_jobs.php # Search & filter jobs
│ ├── job_details.php # View job details
│ ├── apply_job.php # Apply for a job
│ ├── my_applications.php # View applied jobs
│── 📂 admin/ # Admin-related pages
│ ├── dashboard.php # Admin dashboard
│ ├── manage_users.php # View, edit, delete users
│ ├── manage_jobs.php # Approve, delete jobs
│ ├── view_reports.php # Monitor applications & reports
│── 📂 process/ # Handles form submissions
│ ├── process_login.php # Handles login requests
│ ├── process_register.php # Handles registration
│ ├── process_post_job.php # Handles job posting
│ ├── process_apply_job.php # Handles job
applications
│── 📂 uploads/ # Uploads folder (Resumes,
Company Logos)
│── 📜 index.php # Homepage
│── 📜 dashboard.php # Redirects based on role (Job
Seeker/Employer/Admin)
│── 📜 config.php # Configuration file (Database,
Site settings)
│── 📜 README.md # Project documentation
📌 Explanation of Each Folder
1️⃣ assets/
- Stores
static frontend files like:
- css/
→ Stylesheets
- js/
→ JavaScript files
- images/
→ Logos, icons, and banners
2️⃣
database/
- db_connection.php
→ Establishes database connection.
- migrations.sql
→ SQL script for creating tables.
3️⃣
includes/
- Reusable
header, footer, sidebar, and navbar.
4️⃣ auth/
- Handles
login, registration, and logout.
5️⃣
employer/
- Employer
functionalities:
- Post
jobs
- View
applicants
- Manage
job postings
6️⃣
jobseeker/
- Job
Seeker functionalities:
- Search
& apply for jobs
- View
job details
- Track
applications
7️⃣ admin/
- Admin
functionalities:
- Manage
users & jobs
- View
reports
8️⃣ process/
- Contains
PHP scripts for form handling and database operations.
9️⃣ uploads/
- Stores
resumes, company logos, etc.
🔟 Root Files
- index.php
→ Homepage.
- dashboard.php
→ Redirects users based on role.
- config.php
→ Database credentials & settings.
📂 Project Directory Structure (MVC
Pattern)
job-portal/
│── 📂 app/ # Core Application Folder
│ ├── 📂 controllers/
# Handles requests &
business logic
│ │
├── AuthController.php
│ │
├── JobController.php
│ │
├── ApplicationController.php
│ │
├── EmployerController.php
│ │
├── AdminController.php
│ │
│ ├── 📂 models/
# Database models (ORM)
│ │
├── User.php
│ │
├── Job.php
│ │
├── Application.php
│ │
├── Employer.php
│ │
│ ├── 📂 views/
# Frontend views (HTML & PHP templates)
│ │
├── auth/ #
Authentication views
│ │
│ ├── login.php
│ │
│ ├── register.php
│ │
├── employer/ # Employer
views
│ │
│ ├── dashboard.php
│ │
│ ├── post_job.php
│ │
│ ├── manage_jobs.php
│ │
├── jobseeker/ # Job
Seeker views
│ │
│ ├── dashboard.php
│ │
│ ├── search_jobs.php
│ │
│ ├── job_details.php
│ │
│ ├── my_applications.php
│ │
├── admin/ # Admin
views
│ │
│ ├── dashboard.php
│ │
│ ├── manage_users.php
│ │
│ ├── manage_jobs.php
│ │
│ ├── view_reports.php
│ │
├── layouts/ # Common
layout files
│ │
│ ├── header.php
│ │
│ ├── footer.php
│ │
│ ├── navbar.php
│ │
│ ├── 📂 core/
# Core framework files
│ │
├── Controller.php # Base
Controller class
│ │
├── Model.php # Base
Model class
│ │
├── View.php # Handles
loading views
│ │
├── Router.php # Handles
URL routing
│ │
├── Database.php # Database
connection
│ │
│ ├── 📂 middleware/
# Middleware for authentication
│ │
├── AuthMiddleware.php
│ │
├── RoleMiddleware.php
│
│── 📂 public/ # Public assets (CSS, JS,
Images)
│ ├── 📂 css/
# Stylesheets
│ ├── 📂 js/
# JavaScript files
│ ├── 📂 images/
# Logos, icons
│ ├── index.php # Front controller (loads app)
│
│── 📂 config/ # Configuration files
│ ├── config.php # Main configuration (DB, site
settings)
│ ├── routes.php # URL routing definitions
│
│── 📂 storage/ # Uploads (Resumes, Company
Logos)
│
│── 📂 database/ # Database migration scripts
│ ├── migrations.sql # SQL script to create tables
│
│── 📂 logs/ # Log files for debugging
│
│── 📂 tests/ # Test cases
│
│── 📜 .htaccess # URL rewriting rules for Apache
│── 📜 composer.json # Dependencies (if using Composer)
│── 📜 README.md # Documentation
📌 Breakdown of Each Folder
1️⃣ app/
(Main Application)
- Contains
Controllers, Models, Views, Core Files, Middleware.
📂 Controllers
- Handles
business logic and user requests.
- Example:
class JobController extends Controller {
public function index() {
$jobs = Job::getAll();
return View::render('jobseeker/search_jobs',
['jobs' => $jobs]);
}
}
📂 Models
- Interacts
with the database.
- Example:
class Job extends Model {
protected static $table = 'jobs';
}
📂 Views
- Stores
frontend templates.
- Example
(views/jobseeker/search_jobs.php):
<?php include '../layouts/header.php'; ?>
<h1>Search
Jobs</h1>
<?php include
'../layouts/footer.php'; ?>
📂 Core
- Contains
framework-level logic.
- Example
(Router.php):
class Router {
public static function route($url) {
if ($url == '/login') {
(new AuthController())->login();
}
}
}
📂 Middleware
- Handles
security & authentication.
- Example
(AuthMiddleware.php):
class AuthMiddleware {
public static function check() {
if (!isset($_SESSION['user_id'])) {
header('Location: /login');
exit();
}
}
}
2️⃣ public/
(Public Assets)
- Stores
CSS, JavaScript, and Images.
3️⃣ config/
(Configuration Files)
- Contains
database settings and routes.
- Example
(config.php):
php
CopyEdit
define('DB_HOST',
'localhost');
define('DB_USER',
'root');
define('DB_PASS',
'');
define('DB_NAME',
'job_portal');
4️⃣ storage/
(File Uploads)
- Stores
user profile pictures, resumes.
5️⃣ database/
(Database Migrations)
- migrations.sql
contains table definitions.
6️⃣ logs/
(Debugging Logs)
- Stores
error logs.
7️⃣ tests/
(Unit Testing)
- Stores
test scripts.
🔹 Database Tables
1. users
(Job Seekers & Employers)
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
email VARCHAR(255) UNIQUE,
password VARCHAR(255),
role ENUM('admin', 'employer', 'jobseeker'),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. jobs
(Job Listings)
CREATE TABLE jobs (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
description TEXT,
company VARCHAR(255),
location VARCHAR(255),
salary DECIMAL(10,2),
posted_by INT,
FOREIGN KEY (posted_by) REFERENCES
users(id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.
applications (Job Applications)
CREATE TABLE applications (
id INT PRIMARY KEY AUTO_INCREMENT,
job_id INT,
user_id INT,
status ENUM('pending', 'accepted', 'rejected'),
applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (job_id) REFERENCES jobs(id),
FOREIGN KEY