RideShare is a carpooling app that connects drivers and passengers for shared rides, reducing costs and environmental impact. Unfortunately, it is a closed-out project, meaning that this initiative had to be terminated before it could be fully realized.
When I started building the app, I knew its core feature had to be centered around ride-sharing. Initially, I searched for open-source code and gathered ideas from existing carpooling apps on the market. However, I couldn't find suitable open-source resources, so I decided to develop the entire app from scratch. The main challenge was figuring out a major functionality: how to efficiently match drivers with passengers?
The initial solution was to match passengers with drivers based on their
location names. For instance, if a driver was traveling from State A to
State B and a passenger also needed to go from State A to State B, they
could share the same ride. However, this approach encountered a problem
when two states shared a border. Drivers from a different state wouldn't
show up in the search results, even if they were close by and the distance
between them was relatively small.
To address this issue, the solution emerged in the form of using longitude
and latitude coordinates to determine and display available rides. This
way, passengers and drivers could be matched based on their precise
geographic locations, allowing for more accurate and efficient ridesharing
arrangements regardless of state borders or proximity.
To handle location functionality, I explored various open-source libraries but ultimately decided to use a library called react-native-google-places-autocomplete. This library required an API key for Google Maps integration. Once I obtained the API key, the next step was to save location data securely. For this purpose, I utilized Firebase's built-in database, Firestore, to efficiently store and manage location-related information within the carpooling app.
After storing data in Firebase, I opted to use Firebase's range queries for location comparisons. However, Firebase's range queries have limitations, and I encountered an issue where they only supported limited range-based queries. As a result, I had to manually calculate the location range to work around this limitation. This involved implementing custom logic to determine and filter nearby locations within the app.
After ensuring functionality, we focused on improving the app's visual
appeal. Collaborating with another team member, we adopted the same
principle: tackling one aspect at a time.
Our goal was to create a straightforward and user-friendly design,
emphasizing simplicity throughout the development process.
Before launching the app, it was unfortunately closed due to other project priorities. The journey of booking rides and completing the app was left unfinished. However, the experience taught us valuable lessons that propelled us forward, like seeds of wisdom planted in fertile soil.
If given more time or resources, here's what I would do:
I believe the most critical use case of the app can be significantly
improved by recalculating distances instead of directly comparing location
coordinates. This approach promises enhanced accuracy and efficiency in
connecting users for shared rides.
I've also developed a side project. Happening24 is a news aggregator web app that curates news from different sources.