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.


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: