The Data
You’re a nerd. It’s why you’re here. Welcome to a discussion of what data is collected and where it is presented. All data is gathered from 511.org. This data is separated into two categories: GTFS static data and dynamic data.
The GTFS static data includes things like the list of stops, list of trains and which stops they make, list of colors and route names, things like that. This changes when Caltrain updates it. Every time you open or resume the app, the app checks the server for a checksum of the current static data. If Caltrain has updated the data, the checksum will have changed, and the app will download the newest data. This app intentionally does not come with a copy of this data, as that data would be immediately out of date!
The dynamic data is updated by a call to 511.org‘s API servers every 10 seconds, as well as calls to various APIs which handle alert information. The app calls dynamic data every 10 seconds to make sure the data on the server is always up to date. That dynamic data consists of realtime lists of all the trains on the track and associated information and realtime lists of all the stops on the system and associated information. It also contains alert data from to 511.org and Caltrain. This allows for the granular breakdowns in realtime data for each train, each stop, and each type of alert (critical alert, general alert, train alert, station alert, and public address display system (PADS) notifications (what is displayed on each station platform).
Known App Bugs
I am aware of the following non-data related issues and am working on fixing them. Data-related issues can be found below.
- App background colors do not match publicity photos. Will be fixed in next release.
- Caltrain Commuter delineation between Critical Alerts, Train Alerts, and regular Alerts is still being worked on as Caltrain updates how and where their system sends out alerts.
- Holding data (if a train is holding its position without moving) is incorrect
Known Data Bugs
Data for this app is collected from 511.org. Below is the list of known 511.org data bugs affecting the Caltrain Commuter app. Caltrain is aware of these issues and is working on fixing them.
- Trains do not show up in real-time train data after second-to-last stop.
- Trains do not show up in real-time departure information on their second-to-last stop.
The Tech Stack
Interested in what tech I’m using to build this app? Well, here it all is!
Server-side
Language:
- Python/Flask API
Development:
- Github
- Github Actions
- Docker Hub
- Docker Container
- VSCode
Management:
- Tailscale
- Portainer
- Traefik
Hosts/DNS:
- Digital Ocean Droplet
- Ubuntu + Docker
- Cloudflare
Client-side
Language:
- Flutter
Key Packages:
- Firebase (Notifications)
- Sentry.io (Errors/crashes)
Development:
- Github
- Codemagic
- App Store Connect
- Google Play Console
- VSCode
Testing Devices:
- iOS Simulator
- iPhone 12 Pro
- Samsung A12
- iPhone SE 2020
Roadmap
These are ideas on the roadmap that I am hoping to implement as my time and energy allows. There is no set timeline or order for these ideas, nor is there a guarantee that they will ever be implemented. I would like to implement them if possible because I, like you, are an everyday rider of Caltrain and user of this app. Do not buy the app solely for a feature listed here.
Station Alert Notifications
Monthly/Daily tag on/off notifications
Scrollable or PDF of the full schedule
Map on Real Time page and subpages
Widgets
Apple Watch Interface
About Caltrain information
Live Events (iOS)
Customizable home page
Donate
Want to help support continued development, or just say “thank you for making such an awesome app”?
Recommended donation amounts:
- $10: Domain for one year
- $15: Web hosting for one month
- $30: Web hosting for two months
- $100: Apple Developer account for one year
- Custom: I appreciate all support, no matter how much!