What it does

A local school publishes next-day schedule changes as an image on its website, on no fixed schedule — so checking manually means either remembering to look or missing a change. This is a small always-on service that checks instead.

Once a day, shortly before the next school day, it checks whether a schedule-change image has been published for the relevant class. If one has, it emails it — with the image attached — to the people who need to see it. If nothing changed, it stays quiet.

Example

The schedule image attached to the email above:

The attached schedule image showing the day's classes

How it works

  • A scheduled job (the schedule library, not cron) fires once a day at a configurable time
  • It skips weekends, since the school does not publish changes for non-school days
  • Checks for the image with a plain HTTP HEAD request before doing anything else, so a missing image is a normal, silent outcome rather than an error
  • Sends the email over SMTP with the image attached, using an app password rather than a real account password
  • Configuration — sender/receiver addresses, the class to watch, the time to run — is entirely environment variables, so nothing personal lives in the code

Deployment

Packaged as a Docker image, built for both amd64 and arm64 with buildx and published to Docker Hub, so it runs unattended on the same small ARM board that serves this site.