Skip to content

Events aggregator - #325

Merged
LauraLangdon merged 13 commits into
mainfrom
events-aggregator
Jun 12, 2026
Merged

Events aggregator#325
LauraLangdon merged 13 commits into
mainfrom
events-aggregator

Conversation

@LauraLangdon

@LauraLangdon LauraLangdon commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

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 .ics feeds (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:

@netlify

netlify Bot commented Jun 11, 2026

Copy link
Copy Markdown

Deploy Preview for ucospo-net ready!

Name Link
🔨 Latest commit 9ebf3b7
🔍 Latest deploy log https://app.netlify.com/projects/ucospo-net/deploys/6a2c643114a5f60008b19e65
😎 Deploy Preview https://deploy-preview-325--ucospo-net.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

- 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.
@LauraLangdon
LauraLangdon marked this pull request as ready for review June 12, 2026 20:27
@LauraLangdon
LauraLangdon merged commit b84fedd into main Jun 12, 2026
7 checks passed
@LauraLangdon
LauraLangdon deleted the events-aggregator branch June 12, 2026 20:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant