/BookOmatic

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

BookOmatic

What is BookOmatic?

  • This is a project that intends to automate the process of booking meetings according to available time slots.

What problem does BookOmatic solve ?

  • When a person1 wants to book a meeting with person2 he will send an email requesting for the date and time of the meeting. Person1 is not available at the requested time so he gives a date and time to person2 at which he is free. This goes on till they both find a suitable time slot at which they both are free. This is a long and cumbersome process so BookOmatic solves this by showing person1 the date and time slots person2 is free so he can book his meeting immediately.

Contributors


Tools:

  • Django and Python for frontend
  • Firebase for backend

Use case:

  • User1 gets an email from User2 wanting to book a meeting
  • User1 sends back a link to a site
  • User2 opens the site and sees a UI with available time slots
  • User2 presses a time slot and creates a booking
  • User1 gets notified about the requested booking
  • User1 can approve or disapprove the booking

Requirements:

  • Should be able to add events in google calendar
  • Should be able to send email notifications
  • Should be able to show available spots
  • Should check user calendar in case they book something into available spots
  • User should be able to pick which times are going to be available to book, weekly, monthly or yearly (for instance Tuesdays at 3 PM is available all year, Monday at 2 PM is only available today etc)
  • The user that books meeting should be able to add in details for the meeting
    • Might have options like: type of meeting [Phone, Video, Face to Face]
    • Adding in a note for what the meeting is about
    • Name of booker, name of the company
    • Phone number and email
    • if it's a video conference an option for adding a link to the site of the meeting is required
  • Main user should be able to approve or disapprove booking

Edge cases:

  • User1 is in the process of booking an appointment and User2 books it before User1 finishes. So once User1 is done it is no longer available.
    • Solution: When a user presses a time slot it becomes unavailable straight away. And if they cancel or get disapproved it will become available again.
  • User2 can hog available slots by opening the booking page indefinitely, making the application counter-productive. There has to be a time limit set for a single booking to take place, example: 15 mins available to book a slot after User clicks a slot to book

Developer Setup:

  • Fork this repository, and cd into it.
git clone https://github.com/KalleHallden/BookOmatic.git
cd BookOmatic/
  • Create and activate your virtual environment.
    • MacOS/Linux:
    virtualenv --no-site-packages env
    source env/bin/activate
    • Windows:
    virtualenv env
    .\env\Scripts\activate
    
  • Install requisite python packages and modules.
pip install -r requirements.txt
  • Verify if the Django project is working by running the development server.
python manage.py runserver