t-performance-dash
t-performance-dash copied to clipboard
TransitMatters performance visualizer for the MBTA
TransitMatters Data Dashboard
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
- node 20.x and npm 9.x+ required
- With
nvminstalled, usenvm install && nvm use - verify with
node -v
- With
- Python 3.12 with recent poetry (1.7.0 or later)
- Verify with
python --version && poetry --version poetry self updateto update poetry
- Verify with
Development Instructions
- Add
MBTA_V3_API_KEYto your shell environment:export MBTA_V3_API_KEY='KEY'in ~/.bashrc or ~/.zshrc
- 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. - In the root directory, run
npm installto install all frontend and backend dependencies - Run
npm startto start both the JavaScript development server and the Python backend at the same time. - Navigate to http://localhost:3000 (or the url provided after running
npm start)
Deployment Instructions
- Configure AWS CLI 1.x or 2.x with your AWS access key ID and secret under the profile name
transitmatters. - Configure shell environment variables for AWS ACM domain certificates.
TM_FRONTEND_CERT_ARNTM_LABS_WILDCARD_CERT_ARN- (You may also need to set
AWS_DEFAULT_REGIONin your shell tous-east-1. Maybe not! We're not sure.)
- 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-cflag.
Additional notes:
- If you're running this locally, your local MBTA-performance API key (which might be your own) will get uploaded to AWS!
- If you're on a platform with a non-GNU
sed, deploy.sh might fail. On macOS, this is fixed bybrew install gnu-sedand adding it to your PATH. - If you get an unexplained error, check the CloudFormation stack status in AWS Console. Good luck!
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.