How shutdown-awa/xiqueer2ics works
XiQueEr2ICS fetches a student’s timetable from a school’s academic system and turns it into an ICS calendar, either through a web subscription endpoint or a local script. The web flow validates the request, dispatches to the selected school adapter, uses cached timetable data when applicable, and builds calendar events using school-term dates and timetable settings. A separate documented workflow synchronizes public school-calendar data. Source excerpts are partial; unsampled web verification details and some cache wiring are represented only where supported by the README or visible entry points.
Main entry points: xqe.py Timetable and ICS · main.py School timetable adapter · api.py ICS API · scripts.js Browser UI
Components 18
Web subscription
- Browser UI
web/scripts.js - School list
web/schools.json - ICS API
api.py
Timetable to ICS
- Timetable and ICS
xqe.py - User timetable cache
xqe.py - ICS calendar
School integration
- School dispatcher
xqe.py - School timetable adapter
schools/12623/main.py - Kingo DES
schools/12623/jkingo_des.py - School configuration
schools/12623/config.json - Timetable settings
schools/12623/timetable.json
Calendar maintenance
- School calendar data
schools/12623/school_calendar.json - School calendar sync
schools/12623/maintain.py
Other components
- Student
- Calendar app
- Local script user
- Academic system
- Public calendar interface
Connections 19
- Student → Browser UI: enters credentials
- Browser UI → School list: loads options
- Browser UI → ICS API: requests subscription
- Student → ICS API: requests ICS
- ICS API → Timetable and ICS: calls generator
- Timetable and ICS → User timetable cache: reads or updates
- Timetable and ICS → School dispatcher: requests timetable
- School dispatcher → School timetable adapter: loads adapter
- School timetable adapter → School configuration: loads settings
- School timetable adapter → Academic system: authenticates and fetches
- School timetable adapter → Kingo DES: encrypts credentials
- Timetable and ICS → Timetable settings: loads schedule
- Timetable and ICS → School calendar data: reads term dates
- Timetable and ICS → ICS calendar: generates calendar
- ICS API → ICS calendar: returns calendar
- ICS calendar → Calendar app: subscribes or imports
- Local script user → Timetable and ICS: runs locally
- School calendar sync → Public calendar interface: fetches term dates
- School calendar sync → School calendar data: writes dates