Skip to content

Latest commit

 

History

154 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OAA Monitor

The Go code which powers the Outs Above Average Monitor website.

Refresh data

Download the latest Baseball Savant snapshot and write it into data/oaamonitor.db:

go run ./cmd/fetch -database data/oaamonitor.db

Pass -from-storage to pull the most recently uploaded SQLite file from object storage, or -upload to push the refreshed database (credentials are taken from the usual environment variables). Set DATABASE_STORAGE_BUCKET and DATABASE_STORAGE_KEY to override the default oaamonitor/oaamonitor.db object location.

Static site generation

Once the SQLite database is up to date, render the static bundle (HTML, JSON, assets) to the target folder:

go run ./cmd/build -database data/oaamonitor.db -out public

The builder renders every player and team page into the public/ directory, copies static assets, emits a search-index.json, and packages the SQLite database at public/downloads/oaamonitor.db.

Continuous deployment

GitHub Actions is wired to:

  • Refresh the database on the cron schedule with go run ./cmd/fetch -upload and push it to downloads/oaamonitor.db in Bunny Storage (see .github/workflows/refresh.yml).
  • Deploy the static site to Bunny Storage on every push to main, then purge the connected Bunny CDN pull zone after downloading and validating that same database object (see .github/workflows/deploy.yml).

The deployment and refresh workflows need the Bunny Storage zone password as the BUNNY_STORAGE_PASSWORD repository secret. The bucket, New York S3 endpoint, region, and database key for oaamonitor-benbailey-me-site are configured directly in the workflows.

Cache purging also requires:

  • BUNNY_API_KEY as a repository secret, using the account API key from Bunny's Account page
  • BUNNY_PULL_ZONE_ID as a repository variable, using the numeric ID of the pull zone connected to the storage zone

Site deployment syncs public/ to the zone and removes remote files that are no longer in the generated site. A successful sync is followed by a full pull-zone cache purge so changed pages are served immediately.

About

A way to keep track of changes to Statcast's Outs Above Average metric

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages