Instabus, a customizable bus app for Singapore
17 Jul 2024Singapore has excellent public transport, but sometimes too much of a good thing can create a few relatively bad options. What do I mean?
While Singapore’s bus system is extensive, I am rather unfortunate to be living smack in the middle of a town block, something like this:
I don’t actually live here, but let’s pretend I do
As you can see from this map, there are a healthy smattering of buses at different bus stops about equidistant from where I live, at the red x! The good thing about living here is I have plenty of options for the first/last mile of my journey. But give me 20 years of living in a place like this and one big problem starts to loom - which bus stop should I choose? Do I always go to the same bus stop and hopefully minimize my waiting time? Do I try to rifle through my bus app, with only one favourites tab with all the bus stops I care about, including all the buses I don’t care about?
This became enough of a frustration for me last summer that I set out to code an iOS app with a simple, central function: the movelist. Much like Spotify’s or Apple Music’s playlist, you can gather the specific buses from different bus stops within the same grouping (eg. “going to work”, “coming home from bus interchange”). This way, you are always only one tap away from seeing all the information you need to make a quick decision about which bus you should take in any given situation!
Enter… Instabus!
Much like any bus app out there, all the nearest bus stops are sorted by distance for easy access. Click the bus stop icon to reveal the available bus services and their next 3 bus arrival timings, color coded by the level of congestion within the bus (data is pulled from the LTA DataMall API).
To create a movelist, simply press the + button on any bus you’re interested in adding to the movelist - it will bring you to a landing page where you can choose to create a movelist and give it a special name! Conveniently, if you’ve already taken a particular name, it will simply add that bus to that relevant movelist.
Adding buses to a movelist is also simple once you have already created movelists!
Once you have all of your buses gathered in all the different movelists you need, looking at all of your buses in one screen is only one tap away! Now you can safely move towards the bus stop that you know will have a bus that comes fastest, as compared to all the other bus stops, without having to flip back and forth between different bus stops or having to sieve those buses across confusingly named bus stops!
A final word
This iOS app is coded entirely in Swift. There were many more features I explored but ultimately could not implement due to unchangeable limitations. For example, I wanted to implement a widget that would show me live bus arrival timings within each particular movelist. Sadly, I discovered from Apple documentation that the daily refresh budget for a widget is around 40 to 70 times a day. Even at the maximum budget, this would imply a minimum 20 minute refresh rate which was simply untenable for buses whose frequencies were on the order of 10 minutes, and whose bus arrival times can change dramatically across the span of 10 minutes owing to evolving traffic conditions.
I am now moving towards publishing Instabus on the App Store!