Skip to content

💡Schedule and Manage interviews • Automatic email reminders • Save time and frustration • Conflict Management of time

License

Notifications You must be signed in to change notification settings

nightwarriorftw/scale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open Issues Forks Stars Maintained Made with Python ForTheBadge uses-js Open Source Love Built with Love Follow Me Telegram

Scale - Interview Scheduler

📒 Index

🔰 About

A software built using React, Django, Celery and RabbitMQ where admins can create interviews by selecting participants, interview start time and end time.

âš¡ Usage

  • An interview creation page where the admin can create an interview by selecting participants, start time, and end time. Backend throws an error with a proper error message if:
    • Any of the participants is not available during the scheduled time (i.e, has another interview scheduled) [Conflict Management]
    • No of participants is less than 2
  • An interview list page where admin can see all the upcoming interviews.
  • An interview edit page where admin can edit the created interview with the same validations as on the creation page.
  • Invitation email is send when an interview is scheduled or whenever interview schedule is updated. (Celery is used to send email asynchronously)
  • An email reminder 30 mins before the scheduled event (Again celery is used to send reminder email asynchronously)

🔧 Development

📓 Pre-Requisites

Knowledge of React and Django

🔩 Development Environment

  • Backend

1. Make a virtual environment

python3 -m venv virtual
source ./virtual/bin/activate

2. Clone the repo and install requirements

git clone https://github.com/nightwarriorftw/scale.git
pip install -r requirements.txt
cd scale/scale

3. Install RabbitMQ

sudo apt-get install rabbitmq-server`
sudo rabbitmqctl add_user myuser mypassword
sudo rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*"
  • Update celery configuration in settings.py
Add celery configuration in settings.py

    import djcelery
    djcelery.setup_loader()
    BROKER_URL = 'amqp://myuser:mypassword@127.0.0.1:5672//'
    CELERY_ACCEPT_CONTENT = ['json']
    CELERY_TASK_SERIALIZER = 'json'
    CELERY_RESULT_SERIALIZER = 'json'
    CELERY_IMPORTS = ('api.tasks',)

4. Makemigrations, migrate and run the server

python manage.py makemigrations
python manage.py migrate

5. Run tests

python manage.py test

6. Run server

python manage.py runserver

7. Celery and Cronjob

Open another 2 terminals and run the following command respectivley in both of them

celery -A scale worker -l info
celery -A scale beat -l info
  • frontend

8. Move to the urban folder and install requirements

npm install

9. Run the server

npm start

📷 Gallery

  • Front Page FrontPage

  • Host Event Host Event

  • Same timing interview scheduling with same person [conflict management] Conflict

  • Cancel Event Cancel Event

  • Reminder Email

    Reminder Email

  • Celery Reminder email send logs logs

🌟 Credit/Acknowledgment

Aman Verma

Credits goes to me

🔒 License

LICENSE