Coder Social home page Coder Social logo

interviewscheduler's Introduction

InterviewScheduler

This project consists in a interview calendar API. Its purpose is to specify time slots available for candidates and interviewers in order to get matches between them. Figure 1

Project Structure

InterviewScheduler/
    interview_scheduler_service/- Package containing all the code necessary to run the python application (application.py)
        business/               - Business logic code here 
            controllers/        - Since this application is a REST service, every endpoint is mapped to a function in this dir
            utils/              - Collection of functions used by diferent controllers and functions
        crud/                   - Has all the functions needed to access the mongo database
    test/                       - Has unit tests. Run them using *pytest*
    application.py              - Entrypoint for the application
    docker-compose.yaml         - Docker-compose file that runs the back-end and mongo-database
    Dockerfile                  - Dockerfile used to create an image used in the docker-compose.yaml
    init_mongo.py               - Populates the database with sample data
    README.md                   - This is the document you are reading
    requirements.txt            - File that specifies dependencies to be installed using pip
    swagger.yaml                - Document that specifies the REST interface following the openApi 2.0 specification standards

To analyse the code, I suggest going to localhost:4001/v1/ui to see all the endpoints and then going to the interview_scheduler/business/controllers/ directory to see each endpoint function.

Run this project

Using docker-compose

# Runs the interview scheduler service and the mongo database 
docker-compose up -d
# Populates the database with users and interview slots described in the "Populate database" section
./init_database.sh

You can now go to localhost:4001/v1/ui to experiment with the endpoints.

Do it yourself

You can also run this service without docker

Interview Scheduler Service

To install the dependencies you could activate a virtualenv and do

pip install -r requirements.txt

To run the service in dev mode you can do

python application.py

or using a WSGI

uwsgi --http :4001 -w application:application -p 16

Mongo database

You could run a mongo database by doing

docker run --name some-mongo --net=host -d mongo

If you don't, you need to have the mongoDB running in your machine and available on port 27017

Populate database

After running the application, you could add a few users with many random overlapping time slots to observe its behaviour.

If you ran the project using docker-compose, do:

./init_database.sh

else

python init_mongo.py

You can now go to the /slots/matches endpoint and see the matches between these candidates and interviewers, or you could use the API to create more accounts, authenticate and create more interview slots.

interviewscheduler's People

Contributors

thebrunolopes 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.