cscb20

Course website redesign developed as a project for the CSCB20 (Introduction to Databases and Web Applications) course. Complete with user registration, authentication, and authorization for different pages depending on user type. Deployed to Heroku at: https://cscb20-araikatdim.herokuapp.com/

Note:

The website is temporarily down since Heroku removed their free tier hosting.

Table of contents

Website Overview

Users are greeted with the following page when first opening the website:

image

Users can log in as either an instructor or student. Account types are determined during sign up, and determine authorization for different pages. Utorids are used as primary keys in an SQLite Database, and passwords are hashed using Bcrypt before being stored. For accounts with example data, use instructor1 and student1 (passwords are the same as utorids).

image

Users can also register in the same way through the register screen. An error is displayed if a user attempts to register using an existing utorid

Once users are authenticated, a Flask session is created and users are authorized to view a number of pages based on account type. Shared pages between instructors and students include static course information and content.

image

Instructor Specific Pages and Functionality

Instructors are able to view feedback submitted specifically to them by the students in the course. Feedback is fetched through a GET request, and the SQLite DB is queried using server-side session info about the current user.

image

Instructors are also able to view and edit all student marks.

image

Likewise they can act on remark requests from students. Requests are automatically marked as closed once the grade has been updated, or the same grade is resubmitted.

image

Or submit new marks.

image

Student Specific Pages and Functionality

Students are able to fill out a feedback form for any of the instructors that exist in the DB.

image

They can also view their own marks and send remark requests. If remark requests are closed by an instructor, then any new remark request for the same course component would overwrite the old request.

image

And view the status of their requests.

image

Database Diagram

image