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
- 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.
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.
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
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.
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