JobSeeker
JobSeeker is a web application developed as a university assignment. It is designed to facilitate the interaction between job seekers and consultants. The project uses Angular 15 for the frontend and Spring Boot 3 for the backend.
Table of Contents
Technologies
- Frontend: Angular 15
- Backend: Spring Boot 3
- Database: MongoDB
Getting Started
To get started, follow the steps below:
- Clone this repository.
- Configure environment files in both the frontend and backend.
- Install required dependencies.
- Run the frontend and backend applications.
Usage
The application serves as a platform for job seekers to connect with consultants. Users can filter job listings based on country, job category, consultant name, and job role. Follow these steps to make an appointment:
- Choose a country (e.g., American Samoa).
- Select a job category (e.g., Art & Design Related).
- Choose a consultant (e.g., Kavi Castelo).
- Select a job role under the chosen category.
Login Credentials
Reception Panel:
- Username: admin@gmail.com
- Password: Admin@12345
You can use consultants credentials too
Consultant Login (Sign In):
- Username: kavindu123450@gmail.com
- Password: 123456
- Username: kkavindu221@gmail.com
- Password: 123456
Consultant Apply:
nav bar > become a consultant or top bar > become a consultant > apply now
Functionality
CRUD operations for job listings.
Reception and consultant login with shared credentials.
Filter function on the homepage for searching job listings.
Authenticated access for secure operations.
Described only main function. Many more functions to have consultant and reception panels.
Deployment
Frontend: Hosted on Netlify (https://seeker-by-kavi.netlify.app/)
Backend: Hosted on Render (https://jobseeker-ftq4.onrender.com/)
Note: Backend loading time might be up to 30 seconds due to the free hosting plan.
Security
Authentication and authorization mechanisms are integrated.
CORS is configured to allow frontend access to backend APIs.
Reception and consultant login credentials are shared for educational purposes.
Passwords are not encrypted for simplicity and educational purposes.
Local Setup
To run the project locally:
- Clone the repository.
- Checkout the
frontend
branch and configure the environment files as instructed. - Checkout the
backend
branch and configure the CORS settings and application.properties. - Run the frontend and backend applications.
Remember to wait for a minute after loading the website for optimal data transfer.
Feel free to explore and contribute to this educational project! For any questions or issues, contact Kavindu Kokila.
Database Schema Documentation
Overview
This documentation provides an overview of the database schema for the Job Seeker application. It describes the structure, entities, and relationships in the database.
Entity Descriptions
Appointment
The Appointment entity represents an appointment made by a job seeker with a consultant. It stores information about the appointment, including date, location, consultant details, and approval status.
id
(String): Unique identifier for the appointment.country
(String): The country where the appointment is scheduled.category
(String): The category of the appointment.consultant
(String): The consultant assigned to the appointment.jobRole
(String): The job role associated with the appointment.name
(String): The name of the individual making the appointment.email
(String): The email address of the individual making the appointment.date
(String): The date and time of the appointment.approved
(boolean): Flag indicating whether the appointment is approved.
Consultant
The Consultant entity represents a consultant who provides guidance and assistance to job seekers. It stores information about the consultant, including their contact details, expertise, and availability.
country
(String): The country where the consultant is located.jobCategory
(String): The category of jobs the consultant specializes in.jobRole
(Array): An array of job roles the consultant can assist with.name
(String): The name of the consultant.email
(String): The email address of the consultant.phone
(String): The contact phone number of the consultant.address
(String): The address of the consultant.unavailableDates
(List): A list of dates when the consultant is unavailable.portfolio
(String): The consultant's portfolio or summary of expertise.verified
(Boolean): Flag indicating whether the consultant's account is verified.
JobSeeker
The JobSeeker entity represents an individual seeking assistance and guidance in their job search. It stores their contact information and any messages they wish to convey.
email
(String): The email address of the job seeker.message
(String): A message from the job seeker regarding their needs or inquiries.
loginInfo
The loginInfo entity stores authentication information for users of the application.
email
(String): The email address associated with the user account.password
(String): The password associated with the user account.
Entity Relationships
Appointment
andConsultant
: An appointment is associated with a specific consultant. Theconsultant
field in theAppointment
entity references a consultant's details.Appointment
andJobSeeker
: An appointment is requested by a job seeker. Thename
andemail
fields in theAppointment
entity are linked to theJobSeeker
entity.Consultant
andJobSeeker
: Consultants may interact with job seekers through appointments. TheJobSeeker
entity is not directly linked to theConsultant
entity.
Conclusion
This documentation provides an overview of the database schema for the Job Seeker application. It describes the entities, attributes, and relationships that define the structure of the database. Understanding this schema is crucial for maintaining and developing the application's functionality.
References
Application Source Code and Entity Definitions
Job Seeker Backend API Documentation
This document provides information about the APIs exposed by the Job Seeker backend system. These APIs allow you to perform various actions such as managing appointments, consultants, job seekers, and login information.
Table of Contents
Introduction
The Job Seeker backend APIs allow authorized users to manage appointments, consultants, job seekers, and login information. All API endpoints require proper authentication to access.
Base URL
The base URL for all API endpoints is https://jobseeker-ftq4.onrender.com/api/v1
.
Authentication
To access the Job Seeker backend APIs, you need to include an authentication token in the request headers.
Request Headers
Authorization
: Bearer<token>
Replace <token>
with your valid authentication token.
Appointments
Create an Appointment
Endpoint: POST /api/v1/saveAppointment
Create a new appointment.
Request Body:
{
"country": "Country Name",
"category": "Appointment Category",
"consultant": "Consultant Name",
"jobRole": "Job Role",
"name": "Client Name",
"email": "client@example.com",
"date": "2023-08-15T10:00:00",
"approved": false
}
Get All Appointments
Endpoint: GET /api/v1/getAllAppointments
Retrieve a list of all appointments.
Get Appointment by ID
Endpoint: GET /api/v1/getAppointmentById/{id}
Retrieve details of a specific appointment by ID.
Delete an Appointment
Endpoint: DELETE /api/v1/deleteAppointment/{id}
Delete an appointment by ID.
Update Appointment Approval
Endpoint: PUT /api/v1/updateAppointment/{id}
Update the approval status of an appointment by ID.
Update Appointment
Endpoint: PUT /api/v1/updateAppointment/{id}
Update appointment details by ID.
Consultants
Create a Consultant
Endpoint: POST /api/v1/saveConsultant
Create a new consultant.
Request Body:
{
"country": "Country Name",
"jobCategory": "Job Category",
"jobRole": ["Role 1", "Role 2"],
"name": "Consultant Name",
"email": "consultant@example.com",
"phone": "123-456-7890",
"address": "Consultant Address",
"unavailableDates": ["2023-08-10", "2023-08-11"],
"portfolio": "Consultant Portfolio",
"verified": false
}
Get All Consultants
Endpoint: GET /api/v1/getAllConsultants
Retrieve a list of all consultants.
Get Consultant by Email
Endpoint: GET /api/v1/getConsultant/{email}
Retrieve details of a specific consultant by email.
Delete a Consultant
Endpoint: DELETE /api/v1/deleteConsultantByEmail/{email}
Delete a consultant by email and send an email notification.
Update Consultant Information
Endpoint: PUT /api/v1/updateConsultantByEmail/{email}
Update consultant information by email.
Update Consultant Unavailable Dates
Endpoint: PUT /api/v1/setUnavailableDates/{email}
Update consultant's unavailable dates by email.
Job Seekers
Send a Message
Endpoint: POST /api/v1/sendMessage
Send a message as a job seeker.
Request Body:
{
"email": "jobseeker@example.com",
"message": "Message content."
}
Get All Job Seeker Requests
Endpoint: GET /api/v1/loadJobSeekerRequests
Retrieve a list of all job seeker requests.
Get Job Seeker by ID
Endpoint: GET /api/v1/getJobSeekerById/{id}
Retrieve details of a specific job seeker request by ID.
Delete a Job Seeker Request
Endpoint: DELETE /api/v1/deleteMessageRequest/{email}
Delete a job seeker request by email.
Update Job Seeker Request
Endpoint: PUT /api/v1/updateJobSeeker/{id}
Update job seeker request by ID.
Login Information
Add a Consultant
Endpoint: POST /api/v1/addConsultant
Add login information for a new consultant.
Request Body:
{
"email": "consultant@example.com",
"password": "password123"
}
Get Consultant Login Info by Email
Endpoint: GET /api/v1/getConsultantByEmail/{email}
Retrieve login information of a consultant by email.
Update Consultant Authentication
Endpoint: PUT /api/v1/updateAuth/{email}
Update consultant's authentication password by email.