I have taken my Montclair bus tracking web site and created an App for both Android and iOS that you can download for free in their app stores.
This came about because I have been unhappy about how iOS handles progressive web apps. Every time the app is brought to the foreground, iOS does a full reload, which can be slow and annoying. The native app handles this much nicer, and doesn’t ever have to reload the state.
To build the native apps, I used this handy tool: Progress Web App Builder. It takes your website, wraps it using Cordova, and generates both an iOS and an Android project. With only a few tweaks, I was able to get them submitted to the app store.
I have updated the GTFS data for both the tripplanner and on the GTFS Data Exchange. This adds in support for loops. This means we are now starting to support the DART trolley routes! Additionally, this adds in block support which dramatically improves routing in cases where the rider needs to stay on the bus when the bus changes from an outbound to an inbound route.
For example, the US31 route travels down US31 until it the Galleria Mall. At the Galleria Mall, the outbound trip stops and the inbound trip begins. However, on the inbound trip, the bus leaves the Galleria, and instead of going back the way it came, it loops up through Lorna road before eventually meeting up with US31 and continuing back to Central Station. This means if you are somewhere on US31 and want to go to downtown, you actually need to catch the outbound bus, ride it to the Galleria, stay on the bus as it switches to the inbound route, and ride it to downtown. Without the blocks, the routing algorithm was having trouble switching from outbound to inbound, and assumed the rider must exit the bus and make the transfer. Because the transfer time is less than 1 minute, the algorithm would tell the rider to get off the bus, and wait 30 minutes for the next bus! This is now fixed, and the algorithm now knows that the rider can stay on the bus and continue to Central Station. This should help along any of the routes that have loops.