Skip to content

PostIT is web application to find Handyman, Electrician or Plumber. Developed with Django framework.

License

Notifications You must be signed in to change notification settings

saarikabhasi/postIT

Repository files navigation

postIT

postIT postIT

Description

PostIT is web application to find Handyman, Electrician or Plumber. Developed with Django framework.

Work flow:

There are two types of users: Customer and Technician.

  1. Customer creates job/ad with a short description, specifying any requirements such as the budget, Date and time, Location and Technician preference.
  2. Once an ad is created, Technican may apply for the job once, by filling out job request form.
  3. Customer may receive multiple job requests from different technicians for an ad and a Technician may apply for multiple ads.
  4. On recieving job request from Technician, Customer may accept/reject the job request by filling out Job response form with details once again.
  5. If customer accepted the offer, Technician may schedule an appointment or an reject message is displayed
  6. Customers and Technicians may communicate within the application.
  7. Once job's appointment is compeleted Users can give their feedback and ratings.
  8. Auto delete ads/jobs which has an appointment scheduled and is 7 days older than current date.

Features

  1. Only verified user can use this application.
    • Email verification is required for any user to use this web application
  2. User can login with username/email
  3. Show password feature while logging in and registering
  4. Server-side password validation using django Password validation and custom Password validation
  5. Client-side password validation in javascript
  6. Server-side and Client-side Validation of dates to prevent creating jobs, Job request ,Job response and appointment with past dates
  7. Customer can post advertisment not just for their location but also for another location
  8. Job location/ Address form is autofilled with Google Places Api.
  9. User can search or find a job using filter such as Job status/ Job type
  10. Pagination in index page- shows maximum 5 jobs at a time
  11. Technician cannot apply a job that is in pending status or if technician has already applied for the job.
  12. Notifies user everytime when a discussion is created and when a appointment is created.
  13. Clears the notification count once user has checked the notifications.
  14. A discussion is created when job request and/or job reponse is created
  15. Change job status to Closed and Auto delete of ads/jobs that are 7 days old.
  16. Write a brief review and rate on scale of 1-5, about the appointment and experience after appointment is a day old.
  17. Almost all of the operations are handled asynchronously using Javascript.

How to run this application:

   # clone repository
      git clone https://github.com/saarikabhasi/postIT.git
      
    # Create a virtualenv(optional)
      python3 -m venv venv  
     
      
    # Install all dependencies
       pip install -r requirements.txt
       
    # ENV Variables in venv/bin/activate
      export EMAIL = Your gmail address
      export PASSWORD = Your gmail address's password
      export GOOGLE_KEY = You google api key
      export SECRET_KEY= Your django secret key 
      
    # Activate the virtualenv
      source venv/bin/activate or .venv/bin/activate
    
    # Run application
     ./manage.py runserver or python manage.py runserver
     
     # UML Class diagram
      pip install django-extensions.
      pip install pyparsing pydot
      pip install graphviz 
      added django_extensions to INSTALLED_APPS in settings.py
      python manage.py graph_models account advertisement -o models.png
      
      For more information:
      https://django-extensions.readthedocs.io/en/latest/graph_models.html
     

Additional information:

This application uses google api - Maps JavaScript API and Places API. For more information - https://developers.google.com/maps/documentation/javascript/places-autocomplete

Author

saarikabhasi