sxsphinxstack

Projects / Your school's schedule as a calendar feed

Your school's schedule as a calendar feed

Level 2: two to three weeks, real architecture. Use with: automate-a-task, backend-basics, ship-on-github. Resume line when done: Built a scheduled pipeline that converts a scattered institutional schedule into a subscribable calendar feed — regenerated automatically, used daily

Brief

Your school publishes its schedule as a PDF, a webpage, and three different emails, and you retype the parts you care about into your phone. Build a script that reads the published schedule and emits a standard .ics calendar file your phone subscribes to once and never touches again. A scheduled GitHub Actions workflow (free on public repos) regenerates the feed, and GitHub Pages (also free) hosts it at a stable URL. If the school already offers an official feed or API, use that as the source instead of parsing pages.

Personalize

Milestones

  1. Hand-write one week of events as an .ics file. Subscribe your phone to it (host the raw file on GitHub Pages) and confirm events appear.
  2. Write a parser that reads one real source and prints events as structured data. Run it by hand, compare against the source.
  3. Emit .ics from the parsed data. Validate it with an online .ics linter and your own calendar app.
  4. Handle the messy cases your source really has: cancelled events, date ranges, rooms that change.
  5. Commit the pipeline to a public repo with a workflow that runs the script daily and pushes the regenerated feed to Pages.
  6. Let it run for a few days. Diff the generated feed against the source by hand to catch silent parse failures.
  7. Add a failure alarm: if the source page changes shape and the parser finds zero events, the workflow fails loudly instead of publishing an empty feed.
  8. Unsubscribe from your hand-made calendar entries. Live off the feed for a full week.
  9. README: sources, feed URL, how to add a new source.

Done means