Skip to content

Latest commit

 

History

History
59 lines (51 loc) · 5.28 KB

README.md

File metadata and controls

59 lines (51 loc) · 5.28 KB

🐺 PackTravel

Build Codacy Badge Codacy Badge DOI Commit Acitivity Issues Contributors License Languages Code Size Contributor Covenant Repo Size

PackTravel is a web-application that connects people who want to carpool, share a cab or ride a bus together. Users can offer rides with their own vehicles, or travel together as a group in a cab or a bus. PackTravel helps you stay on a budget by reducing your travel expenses so that you don't have to miss out on that concert you've been wanting to attend 😉.

💎 Features

  • Users can create rides - personal vehicle, cab or taxi
  • Autocomplete for source and destination points
  • Users can send requests to join rides, cancel a ride request
  • Ride owners can accept requests from other riders to join rides, ride owners can delete their own rides
  • Forum for every ride to discuss logistics
  • Integration with Google Maps to show ride route , distance and duration.
  • Users can now get an estimated cab fare predicted with machine learning using date and time of the ride as attribute.
  • Emails are sent to ride owners when a ride capacity is reached.
YN7JIC44O9604G33.mp4

👥 Audience

Any person who is looking to reduce spending on their commute expenditure can use our application.

⚒️ Deployment and Installation

  • PackTravel is built using MongoDB Atlas database, Django (Python) for backend-services, and HTML/CSS/JS/Bootstrap for the front-end.
  • The application can be deployed on any web-server running on premise or in the cloud. See django deployment to setup django on a VM.
  • See developer environment setup to setup your development server.
  • Common issues faced by users while setting up the developer environment are listed here.

Scaling PackTravel

Scale PackTravel

  • It is possible to scale PackTravel horizontally because of how we designed the application.
  • All APIs are stateless (REST); Therefore, any application server in a cluster can handle a request.
  • We can use a CDN such as Amazon S3, Cloudflare to serve static assets (images). This enables quicker load time as CDN servers are spread across geographic regions.
  • The bottleneck in PackTravel is the email sending feature. If we use a message queue such as Kafka to offload the task of sending an email to a different application (Kafka consumer), it will free our application server's resources quickly.
  • MongoDB is designed to handle large amounts of data and high levels of throughput. It can distribute data across multiple servers and process it in parallel. It has built-in support for sharding and this makes it easy to scale MongoDB horizontally by adding more servers as needed to handle the increased load.

🎯 Enhancements

  • Merge rides - users should be able to join rides in a via point between a source and a destination (feature).
  • Ride ratings - users should be able to rate other users after a ride is complete (feature).
  • 2FA - Add functionality to support 2 factor authentication to login (security)
  • Cab Fare estimation to help make a more informed ride choice.
  • Owners of ride now notified via email when the ride has reached capacity!

📨 Help and Troubleshooting

For any help or assistance regarding the software, please e-mail any of the developers with the query or a detailed description. Additionally, please use issues on GitHub for any software related issues, bugs or questions.