GoTrack is an iOS app that provides train schedules for the GO Transit rail system of the Greater Toronto Area. In its first six months, GoTrack grew to be the most popular GO Train schedule app for iPhone. Now more than a year old, it is used by over 10,000 unique commuters each week, and is listed as the #1 paid navigation app in Ontario on the App Store.

GoTrack remembers your commute so you can access your daily schedule effortlessly. Schedules are available for all 68 train stations and 8 rail lines, covering the entirety of the GO Transit system. Loading a schedule takes just one tenth of a second, so you'll never miss your ride.

GO Transit has not had an official smartphone app since the days of the iPhone 4S. They do offer a platform-agnostic mobile site, but it lacks the advantages of a native application. And while there are other GO Train apps in the Store, none are as fast and convenient as GoTrack, which provides a schedule with a single tap.

The app's main page gives commuters a quick glance at their schedule for the day, starting with the next departing train. A ‘switch’ button at the top-right swaps the direction of travel for return trips, meaning that most commuters will never need to dig into the settings to change stations. A convenient date picker at the top of the Schedule screen allows commuters to plan their trips in advance.

Don't be fooled by its slick and intuitive exterior – GoTrack has a lot going on behind the scenes. The iOS application reaches out to a PHP web service when it needs to update its schedule, which then connects to a database containing 300,000 records of transit information. Every station, train, route, and time is stored here, and the whole database must be entirely replaced every week to stay up to date. In less than a second, the web service parses out the information it needs and passes the relevant schedule back to the app, which then displays times to the user.

GoTrack is available on the App Store here.

Technologies used

  • Swift for app development
  • CoreData for caching user settings
  • MySQL database for storing train data
  • PHP web service for querying the database