utmgdsc / hacklab-booking

MCS Project with Prof. Liut and Aameri
https://hacklabbooking.utm.utoronto.ca
3 stars 1 forks source link
docker express nodejs reactjs

Hacklab Booking System

MCS Project with Prof. Liut and Aameri
https://hacklabbooking.utm.utoronto.caDocumentation


The Hacklab Booking System is a web application that allows users to book the Hacklab for a specific time and date.

💻 Technologies Used

🧓 Legacy Deployment Instructions

As of now, the project is hosted on a VM provided by UTM. There is an Apache instance listening on ports 80 and 443 and reverse proxies to port 3555.

Our app is self-contained and has its own nginx reverse proxy to have all requests to /api directed to the backend container and all other requests to the frontend container.

The front end is created with react and is served by serve. The backend is a nodejs app.

To deploy, get the latest code, and run docker compose up -d --build. This will start up our application on port 3555. A different port would require modifying the compose file.

🌃 System Architecture

Abstracted System Architecture

User Roles and Characteristics

Student

The student role is the default role given to everyone upon first launch (given already authenticated with Shibboleth. It gives the following permissions:

Request Approver

The request approver role is manually given to faculty upon request. After being granted the approver role, faculty must also request permission to become an approver for each room they would like to approve. It gives the following permissions:

TCard Approver

The TCard Approver role is given to system administrators (e.g., Andrew Wang) for the purpose of notifying the student that TCard access has been granted. It gives the following permissions:

Administrator

The administrator role has all permissions (i.e., the permissions of both Request Approver and TCard Approver) and is given to faculty upon request. It gives the following permissions:

Groups

Groups are a concept used by the Hacklab Booking System to allow multiple people to view the status of bookings. There is no limit to how many members a group can have, and there is no limit to the number of total groups. Students must be added to a group or create a group to create requests.

Student Group Roles

In a group, there are two roles with the following permissions:

Group Manager
Group Member

Design Constraints and Limitations

Our design has some limitations: