SIDE PROJECT · LIVE IN THE CHROME WEB STORE · 2025 —
PrairieCalendar.
A Chrome extension that sends booked PrairieTest exams to Google Calendar or an ICS file. It is live in the Chrome Web Store with 50 users.
PrairieTest lists confirmed exam reservations in its dashboard without a calendar export. Students have to copy the date, time, duration, and location by hand, where one typo can mean missing an exam.
PrairieCalendar started with UBC schedules, but the implementation is independent of any one campus, academic term, or timezone. PrairieTest is used by institutions across North America, so the same workflow can serve students beyond UBC.
Selective export
The popup reads confirmed reservations from the PrairieTest Home page. Students can choose individual exams or use Select All before exporting.
Google Calendar and ICS
One path signs the student in with Google OAuth and creates events through the Google Calendar API. The other generates an ICS file for Apple Calendar and other calendar apps.
Duplicate-safe events
Exporting the same exam again updates the existing Google Calendar event instead of adding another copy.
Timezone-safe scheduling
The extension reads PrairieTest's absolute UTC timestamps and timezone data from the page instead of rebuilding times from the text on screen.
Local by default
Reservation data stays in the browser through chrome.storage.local. PrairieCalendar has no database, and it only connects to Google when a student chooses Google Calendar export.
Keeping exam times correct
TIMESTAMP PARSINGThe time shown on screen is not enough to build a reliable calendar event. PrairieCalendar reads the exact instant and timezone published in the PrairieTest page, then calculates the end time from the exam duration.
If a duration cannot be read, the extension preserves the start time, uses a one-hour fallback, and tells the student to verify the event.
Making both exports agree
18 AUTOMATED TESTSGoogle Calendar and ICS have different output paths, but both consume the same normalized event data. That keeps each reservation consistent whichever calendar the student uses.
Eighteen automated tests cover timestamp parsing, ICS generation, and Google export under several timezone settings.
PrairieCalendar has been tested at UBC. The next step is validating the campus-independent parser with students at more institutions that use PrairieTest.