TCal

An iCal feed of planned service disruptions on MBTA rapid transit.

ℹ How to use

https://t-cal.herokuapp.com/alerts.ics

↑ Copy this iCal URL and add it to your calendar app.

The process for doing this varies wildly, but in the end you’re looking for a box you can paste a URL into (not something that asks you to upload a file). Look for words like “feed”, “sync”, or “subscribe”. If you’re stuck, try a web search for “add ical feed to <calendar app name>.

⚠ Limitations

💬 Report an issue

  1. Check whether your issue also appears in the alerts on mbta.com. If so, please report it to the MBTA. The calendar is auto-generated from alerts data, and I can’t fix issues that originate there.

  2. Check TCal’s open issues on GitHub to see if your issue has already been reported. If it’s there, I know about it and will respond when I can.

  3. Otherwise, feel free to submit a new issue! (requires a GitHub account)

⚙ Advanced usage

Text format

To easily inspect the iCal output in a browser, replace .ics with .txt in the URL and the calendar will be served as text.

Compat mode

The ideal version of the calendar uses RDATE;VALUE=PERIOD to express each disruption as a single recurring event. Unfortunately many calendar apps don’t support this part of the iCal standard, so unless TCal knows that yours does, it defaults to “compat mode”, where each time-block of a disruption is a separate event.

You can override the auto-detection by adding ?compat=true or ?compat=false to the end of the URL, which will force compat mode on or off respectively. If you find your calendar app works fine without compat mode and it’s not already on the Nice List below, please do file an issue to have it added!

Known to support VALUE=PERIOD:

Known to require compat mode:

💻 About the author

I’m Cora, a software engineer on the MBTA’s Customer Technology team. I created this project in my spare time using our public data and APIs, partly as an exercise in learning Crystal and partly to bring more clarity to the MBTA’s numerous shuttle diversions.