Skip to content

i3ta/oh-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS 2200 Office Hours Queue

Welcome to the repository for the CS 2200 Office Hours queue. This is a system designed to run a queue on a Raspberry Pi that can be projected onto a screen for students and TAs to see. Since the system is a bit more complex than previous queue systems, most of the setup and descriptions of how the queue works will be explained below.

Contents

  1. Installation
  2. Repository structure
  3. Tasks

Installation

To deploy this queue on a device running a Unix-based OS, follow these instructions:

  1. Install Node.js and npm. The Node.js version should be 22 or higher.
  2. Clone this repository onto the device.
  3. From the root of the repository, run:
    ./deploy.sh

If you are running a Windows device, then you will have to run the development setup ;)

Development

Below are the basic steps to install this repository for development:

  1. Install Docker and Bun (npm also works, but Bun is considerably faster for installation).
  2. Clone this repository onto your device.
  3. In the backend folder, copy the contents of env.template into a new file named .env.
  4. Add the data files. For this project, there are 3 csv files that need to be placed into the backend/data folder: student.csv (containing student data), ta.csv (containing TA data), and names.csv (for anonymous name data). All files can be named anything as long as the appropriate paths are assigned properly in the .env file. For example, by default the file for the anonymous names is foods.csv, which contains a list of 100 random food ingredients.
  5. To start the server, run the following instruction from the root of the folder:
    docker compose up

Repository structure

The repository is a monorepo containing 2 Docker containers orchestrated using docker compose. The frontend folder contains a React frontend, run and built using Vite, using frontend components from shadcn/ui. All of the frontend components are stored in the components folder.

The backend folder is an Express backend server that uses better-sqlite3 to run a local sqlite instance where all of the data is persisted. This allows the data to be persisted across frontend reloads and provides isolation between sensitive student and TA data from the frontend (although this isn't necessary for this iteration of the project).

Both the frontend and backend locally use Bun as the package manager, although in order to support nodemon for backend hot reloads, and to avoid having to install too many packages in the backend Docker container, the backend Docker uses npm to install instead.

Tasks

Below are the tasks that still need to be done to improve this project:

  • Remote dequeuing for TAs
  • Add TA pictures for On-Duty TAs
  • Easier queue manipulation for TAs
  • Backend route API documentation
  • Backend API tests for correctness and edge cases

About

React website for the CS 2200 office hours queue

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •