Material UI redesign of Blackboard, UTD's online Learning Management System.
Provides a cleaner user-interface along with added functionalities such as notifications, grades overview, weekly calendar, and more. This allows users to drastically improve their workflow while providing the same core functions without potential errors.
Whiteboard is offered as a Chrome Extension (also works on Firefox and Edge), which allows for the extension script to execute API calls directly on the user's behalf. To retrieve the necessary information for the various components, Blackboard's API is used as the default endpoint and the rendered pages themselves are used as a fallback if no API endpoints offer the same functionality. To implement a global Material Design design language, the application is using Material Design Lite, which is a lightweight HTML/CSS-only option that contains the majority of core components. To connect the backend information to the frontend, JavaScript is used to both fetch information as well as apply them onto the rendered HTML pages. For certain features such as saved pins, Chrome extension's local storage API is used to store user defined pins so they can persist between sessions.
- Whether to use an Angular application or Chrome Extension
- Reason: Angular application would allow for greater flexibility with deployment and scripts, but accessing user cookies would be a major security concern without proper 2FA login approved by UTD
- Resolved: Chose to use a Chrome Extension instead as Cross-Origin Resource Sharing (CORS) would not be an issue. In addition, not relying on libraries help cut down the size of installation.
- Whether to use individual HTML templates or just one
- Reason: Individual templates for announcement/course/content pages could allow for greater flexibility, but would also require a centralized template to maintain a seamless transition between different pages. One HTML template would mean only using one template file, which makes editing different elements a lot easier.
- Resolved: Chose to use one template file with HTML snippets in JavaScript to inject depending on the page the user is currently on.
- How to remove the pause during API calls
- Reason: Initially, the template would load just after the original page loads so there is a flash of the old content which is quite visually unpleasing.
- Resolved: Loading screen that writes before anything is called (using a Chrome Extension option), then rewrite with actual template code when that has finished loading.
- How to design sidebar
- Reason: Sidebar should be a fast way for users to jump between course contents. Originally, the sidebar only contained a list of courses and nothing else.
- Resolved: The sidebar now contains a list of courses as well as their respective pins. Those pins can be customized by the users to be able to jump to any other content from any other page.
- How to design weekly calendar
- Reason: The user should have a straightforward way of seeing what is due in the upcoming week. This would allow the user to turn in assignments on time and not stress about missing assignments.
- Resolved: Used Blackboard's Calendar API to retrieve a list of courses between last week and this week. Then, add each event to the page along with some styling.
- How to quickly add to calendar
- Reason: If a professor does not add an assignment onto the calendar for some reason, it usually takes a lot of time for the student to navigate to the calendar and add that information. In addition, it is also to forget the assignment name or the due date by the time they get to the calendar page.
- Resolved: Added a quick add to calendar button on the top right of every page. It presents a dropdown with space for event title, event description, start time and end time. Then, it utilizes the Blackboard Calendar API to add the course into the user's calendar.
- How to design grades overview
- Reason: Blackboard does not offer a way to view all courses' grades at once. This leads to a lot of time wasted as students have to go through each course's grades page to see if anything was updated recently.
- Resolved: The grades overview section on the home page allows the user to view their current grade and the most recent grade for each class. This allows the user to be alerted to recent grade changes much more quickly.
- How to fix Firefox compatibillity
- Reason: Some students were on Firefox and wanted to use the extension.
- Resolved: Changed storage settings to local rather than sync, which allows the extension to be compatible for both browsers types.
- How to let the user know that there is a new update
- Reason: Since the project was originally hosted on GitHub, users aren't notified if there is a new update.
- Resolved: Two solutions were implemented for this issue. First, there is an update link on the bottom left telling the user if there is a new beta/stable release available. Second, the extension is now hosted on Chrome Webstore which allows for easy updates.
- How to implement notifications
- Reason: Blackboar's notifications are all gathered in one huge list, which made checking for new announcements very difficult for students.
- Resolved: Added a green notification bell on the top right; it turns red with the number of unread notifications if there are new notifications; once the user reads the notifications (by closing the notification dropdown), those notifications are added to the local storage and are counted as "dismissed." Currently, notifications are separated into two tabs, regular course announcements and course content added alerts.