flowchart LR
manual[Manual additions]
subgraph automated[Automated imports]
timeedit[TimeEdit sync]
ais[AIS sync]
end
events[(data/events.yaml)]
calendar[ISE calendar page]
ics[ICS feed for sync]
manual --> events
timeedit --> events
ais --> events
events --> calendar
events --> ics
click manual "#manual-additions" "Read about manual calendar additions"
click timeedit "#automated-imports" "Read about automated imports"
click ais "#automated-imports" "Read about automated imports"
click events "https://github.com/fs-ise/handbook/blob/main/data/events.yaml" "View canonical calendar data"
click calendar "#" "Go to the calendar page"
click ics "#ics-feed-calendar-sync-output" "Read about the ICS feed"
classDef clickable text-decoration:underline;
class manual,timeedit,ais,events,calendar,ics clickable;
Calendar
Our shared public calendar has dates for upcoming events in the lab. It contains public events that are of interest to the team and students.
ISE calendar data flow
The ISE calendar combines manually maintained events with automated imports from TimeEdit and AISNET. The resulting canonical calendar data feeds both the public ISE calendar page and an ICS feed that can be subscribed to from external calendar applications.
All input modes are normalized into the shared data/events.yaml file before the calendar page and ICS feed are generated.
Manual additions
Manual additions are maintained directly in data/events.yaml. Use this mode for events that are not available from an automated source.
Automated imports
Some imports are automated, so most users do not need these operational details during normal calendar use.
TimeEdit sync
The TimeEdit sync imports teaching and timetable-related events with src/sync_timeedit.py. It runs through the TimeEdit calendar sync GitHub Action.
To run the same sync locally from the repository root:
python -m pip install .
python src/sync_timeedit.pyAIS sync
The AIS sync imports selected conference events with src/sync_aisnet.py. It runs through the AISNET sync GitHub Action.
To run the same sync locally from the repository root:
python -m pip install .
python src/sync_aisnet.pyICS feed / calendar sync output
The ICS feed is generated from the same canonical data as the calendar page by src/update_calendar.py, with regular updates handled by the calendar ICS GitHub Action. Subscribe to the ISE calendar ICS feed from external calendar apps instead of manually copying events.
https://raw.githubusercontent.com/fs-ise/handbook/main/assets/calendar/fs-ise.ical