Inspiration

We love biking, but biking is becoming increasingly challenging in Toronto. Doug Ford's motion to remove bike lanes from Toronto streets presents severe consequences against the biking community, demotivating them from riding and increasing the risk of collisions with cars. Moreover, bike incidents and bike-related thefts continue to increase year over year. We built BikeBetter to ensure biking in Toronto remains safe and accessiblem in an attempt keep bikers on the road and reduce the environmental damage caused by motor vehicles.

What it does

Custom Routing: The first part is a map that displays recent bike collisions, bike-related injuries, and bike thefts, giving users options for safer and quicker routes based on their comfort level riding a bike. Unlike other mapping apps, ours creates routes based on collision data coupled with live traffic feeds, and a user-reported comfort level.

Rentals: The second part offers bike rentals in a marketplace-like environment. Based on one's location on the map, users have the option to rent a nearby bike or put a bike on the market for rent, with prices and times determined by the user. Users register their bikes with unique ID numbers to ensure renter accountability and combat theft. All users also have the option to report a bike missing.

How we built it

  • Backend: Python + Flask. We use OSMnx to pull the downtown Toronto street graph and NetworkX to route over it (~12,300 nodes, ~29,200 directed edges).
  • Data: The official Toronto KSI collision dataset (2006–2026) and the cycling network dataset from Toronto Open Data. We parsed ~20,000 person-level rows, deduplicated them into distinct cyclist-involved collisions, and attached the risk to nearby graph nodes using metric (UTM) coordinates.
  • The routing model: routes are determined by a custom algorithm given by length, route's bike-infrastructure quality (protected lanes are favored over painted lanes over none), and the collision risk of nearby nodes. Model is scaled by rider confidence.
  • Frontend: A single, no-build index.html with Leaflet for the map and plain JavaScript.
  • Rentals: A Firebase/Firestore backend for bike listings and Stripe for payments and refundable damage deposits.

Challenges we ran into

Integrating Toronto collision data into our map was the hardest part as we had to both map the data as well as use it as part of the routing algorithm.

Additionally, we had to continuously tweak the routing algorithm to prevent it from generating unrealistic routes.

Accomplishments that we're proud of

Building a sustainability project with no AI API calls wasn't intentional, but it makes sense with our goals. Creating a custom router algorithm is both more sustainable and results in better routes.

What's next for BikeBetter

We believe integrating our project with organizations like Project 529 or Bike Index will bolster our goal of theft-prevention for bikers.

Built With

Share this project:

Updates

Submission history