Inspiration

UrbanRunner emerged from the need for a streamlined, efficient tool that helps runners in urban environments plan their routes. As a runner myself, I found it increasingly challenging to manually plot safe, traffic-free routes using Google Maps. This not only became tedious but also constrained me to repetitive routes, stripping the joy from my runs. UrbanRunner aims to solve this problem by automating the route planning process, allowing runners to explore new paths effortlessly while ensuring safety and meeting distance goals.

What UrbanRunner Does

UrbanRunner simplifies the task of finding diverse running routes. Users can input their starting location, desired run distance, and whether they want a looped route that ends at the starting point. The tool then intelligently generates between 5 and 40 potential routes that match these criteria. Leveraging the OpenRouteService API, UrbanRunner prioritizes paths that minimize interaction with traffic and highways, enhancing the runner's safety.

How We Built UrbanRunner

The development of UrbanRunner involved a combination of technologies for both the frontend and backend:

Backend

Python: Serves as the backbone of our backend, handling data processing and API requests.

Flask: Facilitates communication between the frontend and backend via a RESTful API, delivering data in JSON format.

OpenRouteService API: Utilized for fetching coordinates and calculating routes that avoid highways. Pelias: An open-source geolocator used for converting textual addresses into geographical coordinates.

SQLite: Stores and returns user data in a relational database, including user's location, to provide more accurate location searches.

Frontend

React.js: Powers the user interface, providing a responsive, interactive experience for users to input their running preferences and view suggested routes.

Challenges Faced

One of our significant hurdles was adapting to a new API with limited documentation after deciding to shift away from the Google Maps API to embrace open-source alternatives. The OpenRouteService and Pelias APIs, while powerful, presented a steep learning curve due to their less straightforward documentation.

Accomplishments

Despite the challenges, we are happy to have acomplished:

Functionality: We successfully integrated multiple APIs to create a seamless route planning service.

Learning: Gained substantial knowledge about open-source geolocation tools and the nuances of server-client communication via RESTful APIs.

Problem-solving: Overcame the difficulties of using less-documented tools to deliver a fully functional product.

Lessons Learned

The project was an excellent opportunity to deepen our understanding of:

Open-source Technologies: Explored the capabilities and integration of open-source geolocation services.

API Integration: Learned to handle API requests, process data, and troubleshoot issues related to external APIs.

Frontend-Backend Interaction: Enhanced our skills in managing asynchronous data exchange between the client and server.

Future Plans for UrbanRunner

Looking forward, we plan to expand UrbanRunner’s functionality and reach:

Increased Search Range: Extend the maximum route search range beyond the current 2km limit.

Server Migration: Host our service on a cloud platform to improve accessibility and performance.

Enhanced Customization: Introduce features that allow users to tailor routes based on specific preferences, such as including places of interest or avoiding areas with potential allergens.

User profiles and saving routes: Implement a fully functional route saving utility in SQLite, so users can save their favourite routes to their profile.

User security: Improve the security of the user database through encryption and following SQL security best practises.

Conclusion

UrbanRunner stands as a testament to how technology can be applied to fitness, offering a specialized tool that caters to the needs of urban runners. Its development not only enriched our technical prowess but also set the stage for further enhancements that could redefine how runners interact with their urban landscapes.

Share this project:

Updates