GradSchoolZero

A mock graduation management application which allows for the creation of classes, class registration by users, and grade management.

Device mockup of GradSchoolZero

GradSchoolZero is a graduate program management system consisting of 4 types of users (registrars, instructors, students, and outside visitors) and 4 phases of a semester (each with their own constraints). This was made for my Software Engineering class with a group, with the idea suggested by a group of students. This application is what we envision as a replacement of CUNYFirst and Blackboard, software that is used to manage our classes and view our standings in The City College of New York.

Features

GradSchoolZero aims to cater features to 4 different users. The full specifications can be found here.

Outside visitors can:

  1. Browse through basic information such as courses offered.
  2. Apply to be a student or instructor.
  3. View statistics such as the highest & lowest rated courses and top students.

Students can:

  1. Register between 2-4 courses per semester.
  2. Retake a class if they obtained an F previously.
  3. Write a 1-5 star review for a class.
  4. Report a student to the instructor or instructor to the registrar.
  5. View their academic records.
  6. Drop classes early (between the "registration" and "grading" periods) for a W grade.

Instructors can:

  1. Assign grades to students in their class.
  2. View basic information including pass academic records of students in their class.
  3. Report students to the Registrar.

Registrars can:

  1. Accept or reject student & instructor applications.
  2. Set up classes, class times, instructors, and class sizes during the "class set-up" period.
  3. Handle reports made by students & instructors.

Planning and Implementation

This application started off with the create-react-app template, with styling done with Bootstrap through the react-bootstrap library. Initially, we wanted a separate back-end, but due to the learning curve, we decided on mocking server behavior on the client and use a fake database with json-server.

To mimic "back-end" behavior on the client, we designed a bunch of hooks with specific tasks:

Some of the problems I see with this application in retrospect today is that: