View on GitHub

classMA+E

classMA+E is a personal assignment-planning app that will work with the Blackboard API to retrieve a student's active assignments, quizzes, announcements, and more.

About

Group 16 is a team of five students collaborating on their Capstone Senior Design project at the University of South Carolina. United by the shared frustrations of navigating Blackboard, we set out to create a web application that streamlines a student’s academic life. Our platform integrates course data, assignments, exams, and more into a centralized, intuitive interface designed to boost organization and reduce stress. We hope this tool serves as a helpful resource for future students on their academic journey.

Authors:

Access

Website: classmate.osterholt.us

Final Video

github.com/SCCapstone/Group16

External Requirements

To run this project locally, you will need to install Node.js, the Angular Command Line Interface, and JDK. A walkthrough for installing Node & Angular can be found on Angular’s Website. The walkthrough also contains basic commands you can use to get started on a project.

Setup

To set up your environment to run this repository locally you will need: Node.js version 22.9.0 npm version 10.8.3 Angular CLI version 18.2.7

Running

After cloning or pulling from the repository, ensure that you have all of the necessary packages by navigating to the fe-app folder running npm install. After you’ve installed the necessary packages, you can start the app locally by running ng serve in the fe-app directory. If you are in VS Code you can open Run and Debug pane (control+shift+d) and click play. To visit the app, open your web browser and navigate to the URL localhost:4200. While running, you can enter ‘q’ in the CLI to quit or ‘h’ to display a list of options.

Deployment

The app is deployed on a remote server rented by Cam. On each push to main, a Github action builds both our Angular project and Springboot backend with the Dockerfiles to containers stored in the Github Container Registry. From there, the server’s Kubernetes manager, Minikube, pulls down the new container and runs in in 6 different nodes. The routing for the server is configured using Nginx with certificates to allow an HTTPS connection. In RC1, any push to main will also SSH into the server to toggle the K8s pods to rebuild with the new image.

Testing

Our testing is best done in Visual Studio Code.

Home Screen

home screen

Log In

login screen

Main Page

main screen
Overview of Main Page:

Settings

settings settings

When clicking the settings gear icon in the header, a settings page will slide out from the right.
The user is able to customize:

This is also where the user can sign out.

Notifications

notifications
When clicking the notification bell icon in the header, a notifications page will slide out from the right. If the user is sent any notifications, it will show in the popup.

Task List View

task list view
Our task list is designed to layout all the user’s tasks in a simple and clear format, sorted by the closest due date.

Columns from left to right:

Calendar View

calendar view

Our calendar view is designed for the user to see when their tasks are due in a weekly format. Users can scroll through the weeks with the left and right arrows. When a task is clicked in the calendar, that task’s information will show in a popup as well.

Grades

grades view

Our grades view is designed for the user to see each grade for their tasks. When a number grade is inputted, the letter grade is calculated in the right hand column.
Additionally, when on the grades page, the left hand side bar will show the user’s current final grade for its classes.
final grades

Add Task

add task
When selecting the plus icon in the main tab bar, the user can add a task of their own. They are able to include:

They then have the ability to save and close, or immediately add another task. Once the user saves and closes, the task they added will immediately show as confirmation:
confirm add

Grade Calculator

grade calc
When selecting the calculator icon in the main tab bar, the user can input different assignments with their weights and scores. The calculator will then calculate the user’s anticipated final grade for the class. This allows users to calculate any future grades needed to achieve their desired final grade, or the different possible outcomes.
For example:
grade calc example