This is the repository for the TransitMatters Shutdown Tracker. Client code is written in Typescript with React and vite, and the minimal backend is written in Python with Chalice.
- node 20.x and npm 10+ required
- With
nvm
installed, usenvm install && nvm use
- verify with
node -v
- With
- Python 3.12 with recent poetry (1.6.0 or later)
- Verify with
python --version && poetry --version
poetry self update
to update poetry- If using
pyenv
,pyenv install 3.12.0
- Verify with
- In the root directory, run
npm install
to install all frontend and backend dependencies - Run
npm start
to start both the Vite development server and the Python backend at the same time.npm run dev
to just run the Vite development servernpm run start-python
to just run the Chalice backend server
- Navigate to http://localhost:3000 (or the url provided after running
npm start
)
- 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_LABS_WILDCARD_CERT_ARN
- (You may also need to set
AWS_DEFAULT_REGION
in your shell tous-east-1
. Maybe not! We're not sure.) DD_API_KEY
(Datadog API key, needed to deploy to TransitMatters stack in prod)
- Execute
./deploy.sh
.
- If you're on a platform with a non-GNU
sed
, deploy.sh might fail. On macOS, this is fixed bybrew install gnu-sed
and adding it to your PATH. - If you get an unexplained error, check the CloudFormation stack status in AWS Console. Good luck!
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
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.
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.