Skip to content

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:

  1. Updating the underlying job data from Google Sheets
  2. Building the dashboard
  3. Uploading the build to S3
  4. 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.

cd jobs-dashboard
npm install
  • data/job-applications-export.csv and public/jobs-data.json are 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

  1. Open the Google Sheet that tracks job applications.
  2. Go to the Export sheet (the one designed for CSV export).
  3. Download it as CSV:
    • File → Download → Comma Separated Values (.csv)
  4. 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.

npm run update-data

This will:

  • Read: data/job-applications-export.csv
  • Write: public/jobs-data.json

Test the site locally:

npm run dev
  • The latest data should be present.

Build the dashboard

Build the static site with Vite:

npm run build

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:

aws s3 sync dist s3://<bucket-name> --delete --profile <correct-profile>

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

  1. Open the site
  2. 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.