PHP Classes

PHP Job Portal Project API: API to post working jobs and let freelancers apply

Recommend this page to a friend!
  Info   View files Documentation   View files View files (28)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog (1)    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 87 This week: 1All time: 9,971 This week: 560Up
Version License PHP version Categories
job-portal 1.0The PHP License5PHP 5, Content management, Web services
Description 

Author

This package provides an API to post working jobs and let freelancers apply.

It implements an API that can perform several services of interest to companies that provide jobs and professionals that may be interested in these jobs:

Currently, it provides API functions to:

- Register and login employers and freelancers

- Submit job postings

- Retrieve published jobs

- Submit a job proposal to a specific freelancer

- Retrieve job proposals

Innovation Award
PHP Programming Innovation award nominee
March 2022
Number 8
Many professionals work as freelancers to other companies to do the work they need.

Usually, freelancers don't know what jobs exist, nor do companies know how to find professionals that match their job requirements.

This package provides an API that implements a system to connect companies with jobs with professionals looking for work.

Since it is a generic job system API, you can adapt it to any activity area.

Manuel Lemos
Picture of uche
Name: uche <contact>
Classes: 9 packages by
Country: Nigeria Nigeria
Age: ???
All time rank: 279819 in Nigeria Nigeria
Week rank: 27 Up4 in Nigeria Nigeria Up
Innovation award
Innovation award
Nominee: 7x

Documentation

Introduction

aDa is a job portal which connect company and expert freelancer/part-timer. It always keep track of freelancer performance, the more job freelancer completed the more benefit they gained. There are 2 ranks for freelancer with 2 different proposal space as monthly limit for submitting proposal. The ranks are: rank B with 20 pts and rank A with 40 pts.

Objective

This API was developed to: + Enable company to create and post job as well as view proposal for their job postings + Enable freelance to view jobs and submit proposal to it + Employer can create job post, then they can either save it as draft or publish it + Freelancer can view list of published jobs + Freelancer can only submit one proposal to any published job + Each application submitted by freelancer will reduce the proposal space by 2pts, so the rank B freelancer can only submit 10times max and rank A can submit 20times max + Employer can view proposal from freelancer for their job post

Documentation

Base URL ? localhost:8080 ApiKey is in the .env file

Create employer

/api/employer/register
Method ? POST
Body Parameters ? company_name, email, password

ApiKey must be passed to the header (with apiKey as the key) and content-type is json.

Login for employer

/api/employer/login Method ? POST Body Parameters ? email, password

ApiKey must be passed to the header (with apiKey as the key) and content-type is json.

Create freelancer

/api/freelancer/register
Method ? POST
Body Parameters ? name, email, password, rank_id
NB: rank_id can either be 1 or 2. 

ApiKey must be passed to the header (with apiKey as the key) and content-type is json.

Login for freelancer

/api/freelancer/login
Method ? POST
Body Parameters ? email, password

ApiKey must be passed to the header (with apiKey as the key) and content-type is json.

Add a job posting

/api/jobs/create
Method ? POST
Body parameters ? title, description, status_id, created_by

NB: status_id can either be 1 or 2, that is, published or draft respectively. created_by is the id of the employer

Token must be passed to the header (with token as the key) and content-type is json.

View all published jobs

/api/jobs/published
Method ? GET

Token must be passed to the header (with token as the key) and content-type is json.

Create a job proposal (for freelancer)

/api/jobs/proposal/create
Method ? POST
Body parameters ? proposal, job_id, freelancer_id

This endpoint ensures a freelancer does not exceed his monthly job proposals allocations.

Token must be passed to the header (with token as the key) and content-type is json.

Fetch all submitted proposals for a job

/proposals/{job_id}
Method ? GET

NB: job_id is the id of the job posted.

Token must be passed to the header (with token as the key) and content-type is json.

Other notes:

This API was written using the Slim framework. API endpoints are grouped into services ? Employer, Freelancer and Job, located in the src/services folder.

The .env file contains the API key and database configurations. The database schema can be found in the project root folder ? job_posting_schema.sql

To get started with testing this API, + clone or download source code (unzip) + Run composer install + cd to project folder + Run this command php -S localhost:8080 -t public public/index.php to start the server.

See https://www.slimframework.com/

Contact Me: radioactive.uche11@gmail.com


  Files folder image Files  
File Role Description
Files folder image.idea (4 files)
Files folder imagelogs (1 file)
Files folder imagepublic (2 files)
Files folder imagesrc (5 files, 2 directories)
Files folder imagetemplates (1 file)
Files folder imagetests (1 directory)
Accessible without login Plain text file .env Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file composer.lock Data Auxiliary data
Accessible without login Plain text file CONTRIBUTING.md Data Auxiliary data
Accessible without login Plain text file docker-compose.yml Data Auxiliary data
Accessible without login Plain text file job_posting_schema.sql Data Auxiliary data
Accessible without login Plain text file phpunit.xml Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  .idea  
File Role Description
  Accessible without login Plain text file job_portal_api.iml Data Auxiliary data
  Accessible without login Plain text file modules.xml Data Auxiliary data
  Accessible without login Plain text file vcs.xml Data Auxiliary data
  Accessible without login Plain text file workspace.xml Data Auxiliary data

  Files folder image Files  /  logs  
File Role Description
  Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  public  
File Role Description
  Accessible without login Plain text file .htaccess Data Auxiliary data
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files  /  src  
File Role Description
Files folder imagedb (2 files)
Files folder imageservices (3 files)
  Accessible without login Plain text file dependencies.php Example Example script
  Accessible without login Plain text file middleware.php Example Example script
  Accessible without login Plain text file routes.php Aux. Auxiliary script
  Accessible without login Plain text file settings.php Aux. Auxiliary script
  Plain text file Utilities.php Class Class source

  Files folder image Files  /  src  /  db  
File Role Description
  Plain text file connect.php Class Class source
  Plain text file methods.php Class Class source

  Files folder image Files  /  src  /  services  
File Role Description
  Accessible without login Plain text file Employer.php Example Example script
  Accessible without login Plain text file Freelancer.php Example Example script
  Accessible without login Plain text file Jobs.php Example Example script

  Files folder image Files  /  templates  
File Role Description
  Accessible without login Plain text file index.phtml Data Auxiliary data

  Files folder image Files  /  tests  
File Role Description
Files folder imageFunctional (2 files)

  Files folder image Files  /  tests  /  Functional  
File Role Description
  Plain text file BaseTestCase.php Class Class source
  Plain text file HomepageTest.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:87
This week:1
All time:9,971
This week:560Up