CSc 8711, Spring 2019, Project 1

Communicating Web Apps using Python Flask, React, and Postgres

Due: Sunday, 3 February 2019

This is a group project with each group comprising 3 members. Each member of the group should develop at least one REST Web service server component and at least one REST client component.

A short project report describing the various components and work distribution among members is required.

Project Description

In this project, we shall build three separate Web applications using React, Python Flask, and Postgres database. The three applications will interact with each other by providing and consuming RESTful Web Services.

SLATE:

This is an admissions portal for graduate admissions. This website maintains a database slate.sql that records data about departments, programs, applicants, and applications. This website has the following functionality:

  1. Register with email, fname, lname, and password.
  2. Login/Logout
  3. Update Profile (update fields except aid and email)
  4. Apply for admission
  5. Graduate Director should be able to ACCEPT/REJECT applicant (you need not provide a login for the Graduate Director!)
Slate should also provide the following REST Web services:
  1. Given university, return a list of ACCEPTED applicants (only those that have not been sent in the past).
  2. Given university, term, and year, return university level statistics of applicants (for each department and program, return number of applicants, number of accepts, number of rejects, and number of pending decisions).
  3. Given university, department, term, and year, return department level statistics of applicants (for each program, return number of applicants, number of accepts, number of rejects, and number of pending decisions).

PAWS:

This is the university registration portal. This website maintains a database paws.sql that records data about students, courses, sections, and enrollments. This website has the following functionality:

  1. Student Register/Login
  2. Student Choose a semester
  3. Student Add/Drop courses
  4. Student View own class schedule
  5. Student View fees (should reflect tuition waivers, if any as a result of an assistantship; assistantship information should be request from OGMS by a REST service call)
  6. Administrator requests new ACCEPTED students from SLATE (you may hard code "GSU" in this request) (you need not provide a login for the administrator)
  7. Administrator requests university level statistics (you may hard code "GSU"; Allow user to choose term and year from pull down list; no login required for this option as well)
Paws should also provide the following REST Web Services:
  1. Given a department, return a list of students for the department.
  2. Given a department, return a list of courses for the department.
  3. Given department, return a list of enroll information for the department.
  4. Update the grade for a student; This will be a PUT request with values provided for sid,term,year,crn, and grade.

OGMS:

This is the departmental graduate student portal. This website maintains a database ogms.sql that records data about students, assistantships, courses, and enrollments. This website has the following functionality:

  1. Graduate Director retrieves students from PAWS for the department
  2. Graduate Director retrieves courses from PAWS for the department
  3. Graduate Director retrieves enrollments from PAWS for the department
  4. Graduate Director awards assistantship to student (this should also submit this information to the PAWS system by calling the REST service there).
  5. Graduate Director requests department level statistics (you may hard code "GSU" and "CSC"; Allow user to choose term and year from pull down list; no login required for this option as well)
  6. Faculty member submits grade for a student (sends data to REST service at PAWS); Faculty member need not have a login.
OGMS should provide the following REST Web service:
  1. Given sid, return assistantship ('yes' or 'no').