Calendar of planned disruptions on MBTA rapid transit


A calendar of planned service disruptions on MBTA rapid transit, provided as a web page and an iCal feed. See the live site at: https://tcal.digitalcora.net


  1. Install Crystal
  2. shards install

asdf install may also be used, but is not recommended, since this doesn't install any of the system-level packages Crystal depends on.


  • Run the server: crystal src/main.cr
  • Generate docs: crystal docs (then open docs/index.html)
  • Lint the code: bin/ameba


To build a standalone binary bin/server:

  • shards build --production --release --static

The current production instance runs on Fly, using the fly.toml included in the repo.


The server supports these environment variables:

  • HOST — The network address to listen on. Default value is, meaning the server will only be accessible from localhost. Use to listen on all addresses.

  • PORT — The TCP port to listen on. Default value is 8080.

  • ORIGIN — The canonical origin (scheme + host + optional port) of the site. When a request includes a Host and it is not the canonical origin's host, it will be redirected to the same path at the canonical origin. Default value is http://localhost plus the configured PORT.

  • LOG_LEVEL — The log level. Default value is info. See the Log documentation for valid log levels.

  • SENTRY_DSN — If set, unhandled exceptions and other useful data will be reported to Sentry.

  • SENTRY_ENVIRONMENT — The environment string used for Sentry reports, if enabled. Default value is default.



  • 4
  • 0
  • 5
  • 0
  • 4
  • 15 days ago
  • January 11, 2020

MIT License

Synced at

Tue, 27 Feb 2024 06:35:23 GMT