Personal app to sync my calendar status with GitHub and expose availability from a separate calendar.
export STATUS_ENABLED=true
export STATUS_SOURCES_ICAL_URL="https://calendar.google.com/calendar/ical/...%40group.calendar.google.com/public/basic.ics"
export STATUS_TARGETS_GITHUB_TOKEN="ghp_..."
podman compose upStatus sync starts only when STATUS_ENABLED=true and a status target is
configured. The status calendar fetch interval is configured with
STATUS_SOURCES_ICAL_INTERVAL / status.sources.ical.interval, defaulting to
5m.
Set AVAILABILITY_ENABLED=true to fetch availability, expose
/api/availability, and trigger Cloudflare Pages deploys when availability
changes.
AVAILABILITY_SUPPRESSIONS_WORKING_HOURS_STARTdefaults to09:00andAVAILABILITY_SUPPRESSIONS_WORKING_HOURS_ENDdefaults to17:50; weekday blocks that overlap that window are suppressed unless the day is a bank holiday.- Set
AVAILABILITY_SUPPRESSIONS_EXCLUDE_ENGLAND_BANK_HOLIDAYS=trueto lift that weekday suppression on England-and-Wales bank holidays from GOV.UK. Holiday data is fetched at startup and cached in Pebble. AVAILABILITY_SOURCES_ICAL_URLcontrols the availability feed, andAVAILABILITY_API_KEYcontrols the exactAuthorizationheader required by the endpoint.AVAILABILITY_SOURCES_ICAL_INTERVAL/availability.sources.ical.intervalcontrols the availability calendar fetch interval, defaulting to5m.
When availability is enabled, Cloudflare Pages deploys are required and run when
computed availability changes. Configure the build hook with
AVAILABILITY_TARGETS_CLOUDFLARE_PAGES_DEPLOY_HOOK; the publish interval is
AVAILABILITY_TARGETS_CLOUDFLARE_PAGES_INTERVAL /
availability.targets.cloudflare_pages.interval, defaulting to 10m.