You want OpenTripPlanner. Their triangle lets the user trade distance, climbing, and safe facilities.
https://github.com/opentripplanner/OpenTripPlanner
https://github.com/opentripplanner/OpenTripPlanner/blob/dev-...