Overview
Questporter is a utility built for University of Waterloo students to export Quest class schedules into any major calendar application. By focusing on simplicity and approachability, it eliminates the need for complex extensions or technical know-how: students can simply copy, paste, and generate a calendar file that works anywhere. Designed with newer and non-technical students in mind, Questporter makes managing schedules fast, intuitive, and stress-free.
Try Questporter out for yourself, or view the source code.
Software Architecture
Questporter builds on the open-source project Trinovantes/Quest-Schedule-Exporter, which originally handled schedule-to-iCalendar conversion in JavaScript. The backend logic was ported to TypeScript for stronger type safety and easier maintainability. All generation happens fully client-side in the browser, ensuring that student data never leaves their machine.
Technology Stack
- Frontend: TypeScript, Next.js, Tailwind CSS, Shadcn UI
- Infrastructure: Vercel (static hosting + deployment)
- Data Handling: iCalendar file generation (client-side only)
Data Flow

Key Enhancements
Questporter improves on the tool by Trinovantes by adding timezone support, ensuring that classes always appear at their correct local time no matter where the calendar is viewed. Moreover, the calendar generation logic was migrated to TypeScript, making the codebase safer, more reliable, and easier to maintain compared to the original JavaScript version.
Design Case Study
User Experience Goals
The main priority was to design a tool that any student could use within seconds, without needing to understand technical details. Questporter’s design had three key goals:
- Approachability: Simple instructions and step-by-step icons to reduces intimidation.
- Clarity: A obvious copy–paste workflow with placeholders and examples.
- Simplicity: No clutter or unnecessary features, making it lightweight for once-a-term use.
To meet these goals, a straightforward flow was used: the user copies schedule from Quest, pastes it into the input box, and generates a downloadable iCalendar file. For added clarity and personalization, users can optionally use placeholders like @code
, @location
, or @prof
to adjust how events appear.
Finally, with just a single click, the tool automatically downloads an .ics file to the user's device that works seamlessly with Google Calendar, Apple Calendar, Outlook, and other apps, making the entire process quick, intuitive, and non-technical.
UI Features
Dark, Modern Theme
Chosen to reduce eye strain and align with user preferences for professional, yet friendly apps
Instructional Icons
Large, visual step-by-step icons that eliminate the need to read lengthy instructions
Placeholders System
Clear placeholders let students personalize descriptions without touching raw data
Minimalist Layout
Distractions are removed to make it clear that only three simple steps are needed
Key Screens

Future Considerations
In the future, Questporter could allow students to save presets for their preferred placeholder configurations each term, making re-exports faster and more consistent. It could also support direct syncing with calendar providers such as Google Calendar or Outlook, removing the extra step of downloading and importing .ics
files manually.
Moreover, a calendar preview mode would give students a general idea of how their schedule will appear once imported, while an instant preview system could update the display in real time as placeholders or descriptions are adjusted, creating a responsive, fast, and confidence-building experience for users.