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:

  1. Clone this repository.
  2. Configure environment files in both the frontend and backend.
  3. Install required dependencies.
  4. 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:

  1. Choose a country (e.g., American Samoa).
  2. Select a job category (e.g., Art & Design Related).
  3. Choose a consultant (e.g., Kavi Castelo).
  4. 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:

  1. Clone the repository.
  2. Checkout the frontend branch and configure the environment files as instructed.
  3. Checkout the backend branch and configure the CORS settings and application.properties.
  4. 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 and Consultant: An appointment is associated with a specific consultant. The consultant field in the Appointment entity references a consultant's details.
  • Appointment and JobSeeker: An appointment is requested by a job seeker. The name and email fields in the Appointment entity are linked to the JobSeeker entity.
  • Consultant and JobSeeker: Consultants may interact with job seekers through appointments. The JobSeeker entity is not directly linked to the Consultant 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

  1. Introduction
  2. Authentication
  3. Appointments
  4. Consultants
  5. Job Seekers
  6. Login Information

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.


doc-image
Watch the live development