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 😉.
- 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
Any person who is looking to reduce spending on their commute expenditure can use our application.
- 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.
- 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.
- 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!
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.