The Story is a mobile website that aims to answer the question in its namesake: "where the fudge is the bus!" The idea behind this app came to me in the form of a text message sent by a friend in Minneapolis who was waiting (impatiently) for a bus. App idea: combine smartphone user's GPS data with info from a city bus service's realtime info for a simple interface called "where the f*** is the bus?" most bus service apps / websites suck. Being a nice friend, I hacked together a simple (and less profane) solution. Here is the scenario: A person, let's call him Patrick, is standing at a bus stop, tapping his foot, wondering when his bus is coming. Our short tempered friend pulls out his smartphone and goes to The app determines the Patrick's location, then finds the 5 closest bus stops. For each stop, the app checks the transit agencies realtime bus api to find out when the next bus is coming. Patrick is presented with this information in a human-esque sentence (i.e. "Relax, the next 38 Geary is in 2 min.") The arrival information for all the stops near Patrick can be easily browsed with a swipe of the finger (the app orders the information with the bus stop closest to Patrick first). Currently the app supports the Twin Cities (where my friend lives) and San Francisco (where I live).  If the app can't determine your location, or if you are more than mile from a supported bus stop, the app apologizes. IMPORTANT NOTE IF YOU ARE NOT IN ONE OF THE SUPPORTED CITIES If you want to try the app, but you are not physically in SF or the Twin Cities, use the following links to see the app in demo mode. See the app as if you were standing on the corner of Hyde St. & Clay St. in San Francisco. See the app as if you were standing on the corner of 4th St. SE & SE 3rd Ave in Minneapolis. Ease of Use Some people will see this app and think, "I already use Google Maps on my phone for this," or "there is already a bus app for [your city name]." In ideal conditions those apps may work fine, but in many situations these apps do not provide an ideal user experience. With Where the Fudge is the Bus? you are presented with bus arrival information without doing anything (you just have to visit the site). If you want to look through the arrivals at other bus stops in your vicinity, a swipe of the screen is all that's required  - no more zooming into a map and tapping a tiny bus stop icon, no more navigating dropdowns to find your bus stop - its all done automatically. This simple interface, along with the large, high-contrast text makes the app easy to use by people with sight impairments or physical disabilities which limit dexterity in the fingers. The Technology The app is an HTML5 mobile website, based on the HTML5 Mobile boilerplate. It is programmed entirely in JavaScript, with jQuery for the front end and Node.js for the server side.  Additionally, I built several JavaScript libraries to fetch the realtime bus data as well as a geo-aware bus stop API. The JavaScript libraries were built to return realtime arrival information for a given a bus stop. Because of differences in realtime data services I needed to build a different library for each city (the packages are available via NPM). To build the bus stop API, I took the stops.txt file (bus stop locations) from the GTFS data for each supported city, converted them from CSV into GeoJSON with this Node.js script, and loaded them into a public facing CouchDB instance. The Code All of the source code for this project is available on GitHub in the following repositories: Source code for the webapp, the node.js server to run it, and the data conversion tools. Node.js library for the API - Bay Area realtime transit data Node.js library for the Twin Cities NexTrip realtime public transit feed. All of the code is open source; refer to the README file in each repository for specific license information. Please direct any bugs to the Issues page of GitHub and submit a pull requestfor any fixes. Also, if you are interested in the app supporting your area, drop me a line and I'll walk you through the steps.

Share this project: