transitmatters / t-performance-dash

TransitMatters performance visualizer for the MBTA
https://dashboard.transitmatters.org/
MIT License
52 stars 17 forks source link
mbta

TransitMatters Data Dashboard

Release lint build deploy healthcheck

This is the repository for the TransitMatters Data Dashboard. Client code is written in Typescript with React and Next.js, and the backend is written in Python with Chalice.

Requirements to develop locally

Development Instructions

  1. Add MBTA_V3_API_KEY to your shell environment:
    • export MBTA_V3_API_KEY='KEY' in ~/.bashrc or ~/.zshrc
  2. In the root directory, run npm install to install all frontend and backend dependencies
  3. Run npm start to start both the JavaScript development server and the Python backend at the same time.
  4. Navigate to http://localhost:3000 (or the url provided after running npm start)

AWS Setup

If you have access to AWS credentials, add them to your local setup for a better development experience

  1. Add your AWS credentials (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY) to your shell environment, OR add them to a .boto config file with awscli command aws configure.
  2. Ensure that AWS is set to read from/to us-east-1 via export AWS_DEFAULT_REGION=us-east-1 or with an aws config

AWS access is not required for development, but may be required for certain charts and data to appear

Deployment Instructions

  1. Configure AWS CLI 1.x or 2.x with your AWS access key ID and secret under the profile name transitmatters.
  2. Configure shell environment variables for AWS ACM domain certificates.
    • TM_FRONTEND_CERT_ARN
    • TM_LABS_WILDCARD_CERT_ARN
    • (You may also need to set AWS_DEFAULT_REGION in your shell to us-east-1. Maybe not! We're not sure.)
  3. Execute ./deploy.sh (for beta) or ./deploy.sh -p (for production). If deploying from a CI platform (such as GitHub Actions) you may also want to include the -c flag.

Additional notes:

Linting

To lint frontend and backend code, run npm run lint in the root directory

To lint just frontend code, run npm run lint-frontend

To lint just backend code, run npm run lint-backend

VSCode

If you're using VSCode, .vscode contains a based default workspace setup. It also includes recommended extentions that will improve the dev experience. This config is meant to be as small as possible to enable an "out of the box" easy experience for handling eslint.

Updating backend data

See server/rapid/gen_latest_rapid_data.sh and server/bus/gen_latest_bus_data.sh for instructions.

Support TransitMatters

If you've found this app helpful or interesting, please consider donating to TransitMatters to help support our mission to provide data-driven advocacy for a more reliable, sustainable, and equitable transit system in Metropolitan Boston.