Giter Site home page Giter Site logo

django-ninja-job-board's Introduction

Django Job Board

Built with Django, NinjaAPI, Celery, Rabbitmq, Redis and PostgreSQL
It provides common job board features such as filtering vacancies and filtering candidates who have applied for a vacancy to find the best match.
Additionally it has flexible notification system that uses Celery.

Technologies Used

  • Django - High-level Python web framework that encourages rapid development and clean design
  • NinjaAPI - Powerful framework for building APIs in Django with flexible and fast development
  • PostgreSQl - Relational database management system
  • Docker - Platform for developing, shipping, and running applications in containers
  • Redis - Fastest in-memory storage, great for caching
  • Celery - Simple, flexible, and reliable distributed system to process vast amounts of messages
  • RabbitMQ - Reliable and mature messaging and streaming broker

Installation

For installation of the project you required to have Docker and docker-compose installed on your machine,
and for better usage experience: Make tools
To install this project:

  1. Clone this repository.
git clone https://github.com/KERELKO/Django-ninja-job-board
  1. move to directory with .env.example and create .env file based on .env.example
  2. in the same directory run:
docker compose up --build
  1. The project provides several helpful Make commands, run
make migrate

the command responsible for applying and unapplying migrations

Usage

Once the application is running, you can access the job board features through the Swagger
Go to http://127.0.0.1:8000/api/docs#/ in your browser while project is running in docker and you will see:

image

Make commands

make migrate  # applies database migrations (manage.py migrate)
make migrations  # creates migrations (manage.py makemigrations) 
make superuser  # make django superuser (manage.py createsuperuser)
make tests  # run all available tests (pytest tests/)
make shell  # open django shell in app container (python manage.py shell)
make bash  # open terminal in app container

Contributing

If you'd like to contribute to this project, feel free to fork the repository and submit a pull request. Please follow the existing code style and ensure that all tests pass before submitting your changes.

Project structure

.
├── docker-compose.yaml
├── Dockerfile
├── Makefile
├── manage.py
├── poetry.lock
├── pyproject.toml
├── README.md
├── src
│   ├── api
│   │   ├── __init__.py
│   │   ├── schemas.py
│   │   ├── urls.py
│   │   └── v1
│   │       ├── __init__.py
│   │       ├── profiles
│   │       │   ├── employers
│   │       │   │   ├── handlers.py
│   │       │   │   ├── __init__.py
│   │       │   │   └── schemas.py
│   │       │   ├── __init__.py
│   │       │   └── jobseekers
│   │       │       ├── handlers.py
│   │       │       ├── __init__.py
│   │       │       └── schemas.py
│   │       └── vacancies
│   │           ├── handlers.py
│   │           ├── __init__.py
│   │           └── schemas.py
│   ├── apps
│   │   ├── __init__.py
│   │   ├── profiles
│   │   │   ├── admin.py
│   │   │   ├── apps.py
│   │   │   ├── converters
│   │   │   │   ├── employers.py
│   │   │   │   ├── __init__.py
│   │   │   │   └── jobseekers.py
│   │   │   ├── entities
│   │   │   │   ├── base.py
│   │   │   │   ├── employers.py
│   │   │   │   ├── __init__.py
│   │   │   │   └── jobseekers.py
│   │   │   ├── filters.py
│   │   │   ├── __init__.py
│   │   │   ├── models
│   │   │   │   ├── base.py
│   │   │   │   ├── employers.py
│   │   │   │   ├── __init__.py
│   │   │   │   └── jobseekers.py
│   │   │   ├── services
│   │   │   │   ├── base.py
│   │   │   │   ├── employers.py
│   │   │   │   ├── __init__.py
│   │   │   │   └── jobseekers.py
│   │   │   └── use_cases
│   │   │       └── jobseekers.py
│   │   ├── users
│   │   │   ├── admin.py
│   │   │   ├── apps.py
│   │   │   ├── entities.py
│   │   │   ├── exceptions.py
│   │   │   ├── __init__.py
│   │   │   ├── models.py
│   │   │   └── services
│   │   │       └── user.py
│   │   └── vacancies
│   │       ├── admin.py
│   │       ├── apps.py
│   │       ├── converters.py
│   │       ├── entities.py
│   │       ├── enums.py
│   │       ├── filters.py
│   │       ├── __init__.py
│   │       ├── models.py
│   │       ├── services
│   │       │   ├── base.py
│   │       │   ├── __init__.py
│   │       │   └── vacancies.py
│   │       └── use_cases
│   │           └── vacancies.py
│   ├── common
│   │   ├── container.py
│   │   ├── converters
│   │   │   ├── base.py
│   │   │   ├── exceptions.py
│   │   │   └── __init__.py
│   │   ├── filters
│   │   │   ├── __init__.py
│   │   │   └── pagination.py
│   │   ├── __init__.py
│   │   ├── models
│   │   │   ├── base.py
│   │   │   ├── exeptions.py
│   │   │   └── __init__.py
│   │   ├── services
│   │   │   ├── base.py
│   │   │   ├── exceptions.py
│   │   │   ├── __init__.py
│   │   │   └── notifications.py
│   │   └── utils
│   │       ├── cache.py
│   │       ├── __init__.py
│   │       ├── orm.py
│   │       └── time.py
│   └── core
│       ├── asgi.py
│       ├── celery.py
│       ├── exceptions.py
│       ├── __init__.py
│       ├── init.py
│       ├── settings
│       │   ├── base.py
│       │   ├── __init__.py
│       │   ├── local.py
│       │   └── prod.py
│       ├── urls.py
│       └── wsgi.py
└── tests
    ├── api
    │   ├── conftest.py
    │   └── test_vacancy_handlers.py
    ├── fake
    │   └── services
    │       ├── __init__.py
    │       ├── jobseekers.py
    │       └── vacancies.py
    ├── __init__.py
    ├── services
    │   ├── conftest.py
    │   ├── test_common_services.py
    │   └── test_vacancy_service.py
    └── use_cases
        ├── conftest.py
        ├── test_jobseeker_use_cases.py
        └── test_vacancy_use_cases.py

TODO:

  • Make the structure more flexible by passing entities in use cases and services instead of ids
  • Cache the content
  • Cover more parts of the project with robust tests

The main structure of the project is taken from the repo below thanks to the author!

Boilerplate: https://github.com/greedWizard/django-docker-compose-postgres-boilerplate

django-ninja-job-board's People

Contributors

kerelko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.