tired of navigating school portals that have slow loading, unintuitive navigation and are built on last-millennium technologies
What it does
displays ucsc course information in an easy to use interface, showing class name, department, and other useful information
How we built it
- after brainstorming an idea, bootstrapped a single page application using vue cli (tweaking webpack config a bit), adding views and showing some placeholder data about courses.
- then, we scraped ucsc class pages, extracting data about each course, and structured it into a tiny ~10 mib json file. this is served by an express app along with other static files, and finally deployed to google app engine
Challenges we ran into
using the right tooling to extract scraped html data, and ordering the data properly. approached extracting the information with regular expressions, using string methods, and traversing over an ast; in the end we used utilities to traverse over an ast representation of the fetched html.
Accomplishments that we're proud of
creating a bloat-free experience for users of this app
What's next for classmate
- using paging to more efficiently scroll through the data.
- minimizing dependency on css/js/backend
- sorting by each column of the table.
- filtering globally and per-column.
- showing only course codes/links for requirements, but showing full text on hover.
- allowing download of data.
- adding archives of previous years' data.
- filtering based on the user's major, minor, college (for core course), max units/classes per quarter, whether or not to take summer classes, how to distribute ge/major courses, and classes/requirements already fulfilled to help user work to fulfill requirements. allowing user to save this profile for future use and download the tailored information.
- scraping other ucsc databases for enhanced information.
- scraping course and class content from other schools and homogeneously displaying those results.
- expanding the scope to include campus recreation classes, and auto-generating a class calendar in ical/.ics format
- interdisciplinariness: filtering electives/ge's to show those required by certain degree programs
- showing proposed schedule grid: drag/drop and auto-reevaluate prereqs