Skip to content

Job Application Review | DRF | SQLite | Celery | RabbitMQ | API

Notifications You must be signed in to change notification settings

akshay1027/job-application-review

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tech stack:

  • DRF| SQLite| Rabbitmq| Celery| Docker| Postman

Rabbitmq (in WSL):

  • sudo apt-get install rabbitmq-server
  • sudo systemctl enable rabbitmq-server
  • sudo service rabbitmq-server start OR sudo systemctl start rabbitmq-server
  • sudo service rabbitmq-server status OR systemctl status rabbitmq-server

Celery:

  • celery purge
  • celery -A backend worker --pool=solo -l info

install fresh and not from cache

  • pip install celery --no-cache-dir

contact info:

Job application review system:

  • create application ✅

  • update application | email, name, skills ✅

  • upload and update resume ✅

  • delete application ✅

  • get one particular application ✅

  • get all applications ✅

  • ability to make an application selected or rejected ✅

  • get all selected applications ✅

  • get all rejected applications ✅

  • filter all applications by name and or email ✅

  • filter all applications based on skill ✅

  • send mail after an application is marked ✅

  • TODO (minimum):

  1. It should have api endpoints to create, retrieve, update, delete and list the information of an applicant. ✅
  2. It should also have a feature to mark applicants Selected or rejected. ✅
  • TODO (extra):
  1. Upload Resume and store as URL ✅
  2. API Documentation (but in postman) ✅
  3. Filtering Applications ✅
  • TODO (my own):
  1. Extra filters ✅
  2. Extra update APIs ✅
  3. Multiple jobs (it is a job (single job) review system but still mutiple jobs feature can be added in future) ❌
  4. Send mail after application is marked ✅

Postman documentation of API

  • NOTE: toogle each request, the grey colour ones are the request and response tested in local env and saved. link image

Engineering decisions taken during class hours 😅:

IMG_20220916_115557 IMG_20220916_115544

Celery worker:

image

Architecture/design decisons:

  • I have kept the Application model small as of now as its a project to test my coding ability. Eg: Emitted fields like Phone_number, Degree etc deliberately, for the reasons stated before.

  • UUID is better for performing queries faster.

  • For patch request, dont keep ending slash https://stackoverflow.com/questions/2712682/how-to-select-a-record-and-update-it-with-a-single-queryset-in-django

  • Eg: Backend developer and frontend developer jobs exist. So if a user applied for backend role, they can't apply for frontend with same email id due to current design having email id as unique field.

    Sol: Use uuid or shorter ID instead, i used email before to get an application uniquely as its easier by now how to go with id only.

  • Eg: UUID vs Normal ID : https://stackoverflow.com/a/58737923/13946919

  • How to upload file:

  1. Install pillow.
  2. Make necessary changes in settings file for configuration of files.
  3. Define the model.
  4. Define the serializer.
  5. Define the view. EG: Resume uploaded: http://127.0.0.1:8000/static/resumes/3a5fa5e4-21c9-21ce-b0eb-d5d335275f2d.pdf

job-mail

About

Job Application Review | DRF | SQLite | Celery | RabbitMQ | API

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages