Skip to content

DylanHalstead/ClassConnect

Repository files navigation

📆 Class Connect

🤔 What Does It Do

Class Connect is an scheduling application designed to streamline the process of arranging office hours appointments between students and their Instructional Teams. With a focus on efficiency, customizability, and ease of use, Class Connect provides a user-friendly interface that simplifies the booking process while incorporating features to ensure accountability and reliability. This was an independant study project done through UNC Charlotte's College of Computing and Informatics

💡 Features

  • Interactive Calendar: Class Connect includes an interactive, dynamic calendar that allows students to view available office hours and book appointments for any and all classes utilizing the platform.
  • Reputation-Based Restrictions: Class Connect includes a reputation-based restriction system to manage student behavior, ensuring accountability and reliability when booking office hours.
  • Maximum Office Hours: When booking appointments, students are limited to a maximum number of office hours per day to ensure fair distribution of time among students.
  • Google Calendar and Meet API Integration: When booking appointments, Class Connect seemlessly integrates with the Google Calendar and Google Meet API to automatically make calendar invites, ensuring smooth communication and coordination.
  • SSO with Google: Single Sign-On (SSO) functionality with Google accounts for authentication. Used to also verify that all accounts are UNC Charlotte students.
  • Server Side Rendering: For enhanced performance and user experience, the application has been built as a full-stack, Server Side Rendered application via SvelteKit.

🛠️ Local Development

Postgres

This applaction requires a Postgres database to run. You can set up a local Postgres database with the following command using Docker:

docker run --name class-connect-db -e POSTGRES_PASSWORD=class-connect -p 5432:5432 -d postgres

or by installing Postgres on your local machine.

After setting up your Postgres database, you will need to run the scripts in schema.sql to create the necessary tables. You can do so with the following command:

psql -d <database name> -f schema.sql

or by running the scripts in schema.sql in your Postgres client.

SvelteKit

To run and build the application locally, you will need Node.js installed (Built with v20.12.1; recommend using nvm).

Once you've installed dependencies from package.json with npm install, start the development server with:

npm run dev

# or start the server and open the app in a new browser tab
npm run dev -- --open

Enviroment Variables

To run the application locally and connect to DB's and API's, you will need to create a .env file in the root directory of the project. You can create a template based on sample.env.

For the variables SECRET_GCP_CLIENT_ID and SECRET_GCP_CLIENT_SECRET, you will need to create a new project and download the client_secret.json from Google Cloud Platform. More than likely a Google Cloud project has already been built, speak to Dylan or whoever is maintaining the application.

🚀 Deployment

To create a production version of your app, we utilize Docker to containerize the application. a Dockerfile has been built to configure the application and build an image ready for production. To build the image, you will need to pass in build arguments which are the same as the values specified in your .env You can build the production version of the app with the following command:

docker build --build-arg SECRET_GCP_CLIENT_ID="<value here>" --build-arg SECRET_GCP_CLIENT_SECRET="<value here>" --build-arg SECRET_DB_HOST="<value here>" --build-arg SECRET_DB_PORT="<value here>" --build-arg SECRET_DB_NAME="<value here>" --build-arg SECRET_DB_USER="<value here>" --build-arg SECRET_DB_PASSWORD="<value here>" --build-arg SECRET_DB_SSL="<value here>" --build-arg SECRET_NODE_ENVIROMENT="<value here>" -t class-connect:latest .

You can then run the image with the following command:

docker run -p 3000:3000 class-connect

About

Teacher Office Hour/Meeting Calendar Application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •