Deploy Jobs Dashboard Site
System: Job Dashboard
Last updated: 2025-12-02
Related repo: github.com/jordan-holt/jobs-dashboard
This runbook describes how to update and deploy the Jobs Dashboard system.
It covers:
- Updating the underlying job data from Google Sheets
- Building the dashboard
- Uploading the build to S3
- Invalidating CloudFront so changes go live quickly
Prerequisites
- The jobs dashboard infrastructure has already been created via Terraform (module
jobs_dashboard_site). - Know the following values (from
terraform output):- S3 bucket name for the site
- CloudFront distribution ID
- The dashboard application repo is checked out at:
The dashboard project is set up and dependencies installed.
data/job-applications-export.csvandpublic/jobs-data.jsonare git-ignored in the dashboard repo.- AWS CLI is installed and configured with credentials that can write to S3 and manage CloudFront.
Export the Export sheet as CSV
- Open the Google Sheet that tracks job applications.
- Go to the Export sheet (the one designed for CSV export).
- Download it as CSV:
- File → Download → Comma Separated Values (.csv)
- Save the file to the dashboard repo
Regenerate jobs-data.json
The dashboard reads data from public/jobs-data.json, which is generated from the export CSV by a Python script.
This will:
- Read: data/job-applications-export.csv
- Write: public/jobs-data.json
Test the site locally:
- The latest data should be present.
Build the dashboard
Build the static site with Vite:
This will create a production build in dist/
The dist folder will contain the compiled app and a copy of jobs-data.json from public/.
Upload the build to S3
Upload the contents of dist/ to the S3 bucket From the dashboard repo:
Invalidate CloudFront cache
To make changes visible quickly you may need to invalidate the CloudFront cache.
aws cloudfront create-invalidation --profile <profile-name> \
--distribution-id <distrobution-id> \
--paths "/*"
CloudFront will start invalidating objects
Verify the deployment
- Open the site
- Confirm
- Summary stats, charts, and recent applications reflect the latest data.
- The UI loads correctly with no 404s or console errors.
- No company names or other sensitive details are visible.