Inspiration
HNTB challenge
What it does
Our app allows for passengers from rural areas to access to a service where they can schedule a ride to take them from a chosen start point to a destination. Our app dynamically schedules all ride reservations scheduled for a certain day into a minimal amount of routes for our drivers. This means that we will merge multiple riders' routes into a new optimal route, if users are not inconvenienced by more than a few minutes.
This allows for more eco friendliness as less vehicles are needed to deliver everyone to their destination. If rides are too far apart, we simply assign multiple drivers to individually pick up each user.
For the drivers, we give turn by turn instructions to get to each pickup/dropoff point. Once a driver is done, they can mark their route as complete, and the database will update with that information. The driver's location is also automatically sent back to the database so that the nearest route to them will be assigned.
How we built it
We have a React front end with a Supabase database for authentication and data storage. We additionally have a Python server that runs our route optimization algorithm. We also used MapBox for our map and navigation needs. Finally, we used .tech as our TLD to keep a good look and feel for our visitors. The domains we utilized are as follows:
- wherezmywhip.tech (Primary Domain)
Challenges we ran into
Coalescing routes together was the main focus of the project and proved difficult, as the map planning service from MapBox could not guarantee pickup locations would be picked before drop off locations. To accurately check with the MapBox optimizer, we would need to check all non-repeating permutations of all partitions of possible pick ups and drop offs. This is an intractable problem, and would blow up our free API usage. Because of this, we only check a small amount of possible orderings of route merging. While this lowers API and compute usage, we may miss more optimal routes, but we believe this is a good balance.
Our routing promises
- You are guaranteed to arrive before your scheduled time
- You will never arrive more than 10 minutes early
- You will never have to spend more than 30 extra minutes in the vehicle then what it would take to travel there alone.
Our approach to merging these user requests into one route worked by starting with everyone for the day placed onto one route, checking if the navigation path doesn't inconvenience any passengers with long wait times or late drop offs. If the route satisfies all requirements, we send this route to the database and the drivers. If it inconveniences anyone, we split all the requests into two routes and check each route if it gets everyone there on time within our promises, and we repeat this splitting of requests until all users for the day get a satisfying route.
Accomplishments that we're proud of
We're proud of creating an app that works and solves the objectives. Completing this challenge within this time frame provided us a great opportunity to learn new technologies and develop skills in a wide variety of platforms.
What we learned
We learned about how to use MapBox, tackle the route merging problem. We learned how to create a clean website with React, We learned database management, an UI Design. We gained valuable teamwork skills as well as project management in order to ship a viable product given the deadline.
.tech domain
Our domain wherezmywhip.tech provides a clean look and feel for our passengers
Github
Frontend Web App
https://github.com/Sargeanthost/goathacks2025
Backend Route Merger
https://github.com/Sargeanthost/wherezmywhipmerger
Other Domains and Project Information
- carlosmedina.tech
- gocuret.tech
Log in or sign up for Devpost to join the conversation.