Inspiration
Every semester, we noticed the same pattern across campus: students juggling tab after tab just to piece together a schedule that works. Rate My Professor for teaching quality. Madgrades for grade distributions. The enrollment platform for section times. A spreadsheet or notes app to check for conflicts. It wasn’t broken—but it definitely wasn’t convenient.We all shared that moment of wondering: why does something we use so often feel so scattered? Our goal became clear. We wanted to create a tool that puts everything students need right where they need it—making enrollment smoother, more intuitive, and more accessible for thousands of our peers. Not by replacing the existing system, but by enhancing it. By integrating the platforms students already rely on into the one they use the most. We set out to build the enrollment experience we genuinely wish we had ourselves: a unified, thoughtful, and modern layer on top of the existing platform that makes scheduling easier for everyone on campus.
What it does
Enhanced Enroll is a Chrome extension that transforms the existing enrollment platform into a more powerful, student-friendly tool. It improves search and navigation elements so students can compare sections and understand their options at a glance.
- Integrates Rate My Professor and Madgrades data seamlessly into course search results. Students can view instructor ratings, grade distributions, and past difficulty without leaving the page.
- Adds a real-time schedule compatibility checker: if a class section conflicts with a course already in your schedule, the extension automatically highlights it in red.
Everything stays within the enrollment page—no more switching tabs, copying course codes, or losing your place.
How we built it
We built Enhanced Enroll as a modular Chrome extension using:
- JavaScript, HTML, and CSS for the frontend enhancement layer
- Chrome Extension Manifest V3 for scripting, permissions, and content injection
- Content scripts to dynamically insert new UI elements into the university’s existing pages
- Dynamic ES module imports to load our data handlers (like the Madgrades parser)
- APIs and scraping techniques to fetch Rate My Professor and Madgrades data
- Careful DOM observation to detect when the enrollment platform loads or updates its UI so we could inject the right features at the right time
- We divided tasks across four team members and collaborated using GitHub.
Challenges we ran into
- Cross-origin restrictions: Fetching data from sites like RMP and Madgrades within a content script caused CORS issues we had to work around through background script requests.
- Injecting modules into a non-module page: Modern ES module imports don’t play nicely with older university web pages, so loading external scripts required careful design.
- Dynamic page loading: The enrollment platform uses client-side rendering, so elements weren’t always in the DOM when we needed them—forcing us to use MutationObservers.
- Time conflict logic: Accounting for all section types (lectures, discussions, labs) and edge cases was trickier than it looked.
- UI integration: Making our injected elements look native while still being clearly useful took multiple iterations.
A few hours into the hackathon, we discovered something critical: The university enrollment platform would be completely offline from 6 a.m. to 2 p.m. on the second day. Since our extension depends on interacting with the live site, this forced a major shift in our plan. Instead of spreading development throughout the event, we reorganized on the fly:
- We front-loaded all programming, pushing to finish core features during the first day and early morning.
- We reserved the outage window for polishing, documentation, and non–platform-dependent tasks.
This required tight coordination and fast decision-making—but it kept the project on track.
Accomplishments that we're proud of
- We successfully reorganized our development timeline to complete the extension despite the platform outage.
- We created a working Chrome extension that students can actually use today on the live enrollment system.
- We successfully integrated two of the most frequently used student tools—RMP and Madgrades—directly inside the official platform.
- Our conflict-detection system turned out to be intuitive, clean, and reliable.
- We built the entire project in a short time frame while learning new technologies like extension architecture, DOM injection, and asynchronous module handling.
- Most importantly, when we demoed it to other students, they said, “Wait… why doesn’t the university already do this?”
What we learned
- How to navigate the complexity of Chrome extension development under Manifest V3
- Best practices for injecting scripts safely into dynamic websites
- The importance of clean architecture when collaborating across multiple files and modules
- How to integrate third-party data sources into a constrained environment
- That user experience matters as much as technical execution—small features (like red conflict text) make a big impact
What's next for ENHANCED ENROLL
- A mobile companion version or Safari/Firefox ports
- Implement a search filter for dates/times of classes
Built With
- css
- github
- html
- javascript
- json
- madgradesapi
- ratemyprofessorapi
Log in or sign up for Devpost to join the conversation.