Events aggregator - #325
Merged
Merged
Conversation
✅ Deploy Preview for ucospo-net ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
…partial-browser pa11y failure)
- Render the calendar + popover in the site font (Atkinson Hyperlegible); aggregate-events.js vendors the woff2s to /fonts/ since MyST hashes static/ - Move every calendar + popover color onto :root variables (event tiles included) so the palette lives in one place - Add prefers-color-scheme dark mode mirroring the site's dark palette - Drop the stray internal scrollbar (overflow: hidden); the iframe is auto-sized to its content, so it never needs one
The prior commit vendored Atkinson to /fonts/, which also satisfied the site's own (previously-broken) @font-face and forced Atkinson across the whole site. Drop the vendoring and the embed @font-face; the embed now mirrors the site's font declaration with no webfont, falling back to the reader's sans-serif like the rest of the site.
This was referenced Jun 12, 2026
LauraLangdon
marked this pull request as ready for review
June 12, 2026 20:27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR. This is a build-time batch job, a static-site generator step. There's no server, no database, nothing running at request time. Every time the site builds, one Node script reads each campus's calendar from wherever it lives, mashes the six of them into a single common shape, and writes a handful of static files: a JSON that powers the calendar embedded on the Events page, plus subscribable
.icsfeeds (one per campus and one merged "all"). Those files are served free from GitHub Pages and are what the website and people's calendar apps read.Why this design (not Teamup or an off-the-shelf aggregator). Nothing is authored in a central tool (every campus already maintains its calendar elsewhere), so a hub like Teamup is just a removable middleman, and its free tier can't be an automated hub anyway (paid sync/API, and a 5-calendar cap against our 6 campuses + UCSF + a network calendar). Off-the-shelf mergers don't fit either: two sources aren't iCal (UCSD is a JSON API, UCSC is RSS), and the hosted ones reintroduce a server and drop per-campus feeds. A build-time static build is $0, has nothing to run or break at request time, and no platform caps. The tradeoff we accept: maintaining a few small adapter files when a campus changes its feed format.
Future work: