Singapore Transit turned two years on April 3rd. It has gradually grown from an app that had bus arrivals only to an app that includes MRT & LRT service status, traffic conditions, traffic camera images, Siri integration, and rich push notifications.

It has lasted longer than I thought and has had consistently higher ratings than I thought. On the Singapore App Store it currently holds a 4.5* rating.

Recently, I’ve been thinking about what I want to do with the app the future.


My intention is to separate Singapore Transit into three apps:

  • SG Buses
  • SG Rail
  • SG Traffic

Why do this?

First, each app will have a specific area of focus and this has clear benefits. For example, the map will become central to the SG Buses experience rather than part of a tableview, which itself is sandwiched between a Tab Bar and Navigation Bar.

Second, each app will be easier to maintain and update. As Singapore Transit has got bigger, this has become a bit harder.

At a minimum, these apps will support iPhone, iPad, and Apple Watch.


Singapore Transit’s backend—used for generating push notifications, monitoring MRT/LRT service status and traffic alerts—is currenty built using a Node/Express/Mongo stack.

For the new apps, the backend will be written in Swift and powered by Vapor. (I was inspired to use Vapor after seeing this video at iOS Conf SG.)

Vapor (Server-side Swift)
Vapor is a popular web framework written in Swift. It provides a beautifully expressive and easy to use foundation for your next website, API, or cloud project.
* * *

In summary, there’s a lot of work and a lot of changes. Bringing it all to fruition will take some time.

And then there’s WWDC…which will change everything again.