> For the complete documentation index, see [llms.txt](https://hack-at-uci-tech-team.gitbook.io/irvinehacks-2024-website-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hack-at-uci-tech-team.gitbook.io/irvinehacks-2024-website-docs/introduction.md).

# Introduction

## Overview

This GitBook documents the features in the [IrvineHacks](https://github.com/HackAtUCI/irvinehacks-site) repository.&#x20;

This monorepo uses [turborepo](https://turbo.build/repo) with [pnpm](https://pnpm.io/) as a package manager. It contains the following applications:

### `apps/site`

A [Next.js](https://nextjs.org/) 13 App Router application that contains the frontend for the IrivneHacks site. At the moment, the site contains the following sections:

* User-facing frontend that contains a home page, resources page, schedule page, application page, and portal page
* Administration portal where organizers can review applications and check hackathon participants into the hackathon and into workshops at the hackathon

The development server runs at `http://localhost:3000`. If this port is taken, the next available port will be used.

### `apps/api`

A [FastAPI](https://fastapi.tiangolo.com/) project that contains the API for the IrvineHacks site. Specifically, it includes various routes related to the following:

* Processing hackathon applications
* UCI Shibboleth and guest authentication
* Sending various emails to hackathon participants with [SendGrid](https://sendgrid.com)
* Processing DocuSign waiver completions
* Updating user statuses (i.e. whether they are accepted, have RSVP'd, etc.)
* Enforcing RSVP deadlines

The development server runs at `http://localhost:8000`. If this port is taken, the next available port will be used.&#x20;

### `apps/sanity`

A [Sanity Studio](https://www.sanity.io/studio) project.

This app contains the dashboard used to view and edit content stored in [Sanity](https://www.sanity.io/).

The development server runs at `http://localhost:3333`. If this port is taken, the project will error.

## Third-party Services

To support all of our features, we use a few third-party services. They are:

* MongoDB
  * Used for storing applications, application reviews, admin dashboard settings, user check-ins
* Google Drive
  * Used for storing resume PDFs that are associated with an application
* DocuSign
  * Used for waivers for hackathon participants
* SendGrid
  * Used for sending emails to hackathon participants (decision emails, waitlist emails, etc.)
* Slack
  * Used for receiving data about the hackathon Slack and automatically updating the admin dashboard

<figure><img src="/files/K4DxynAscpIqL8n94vXL" alt=""><figcaption><p>High-level overview of all apps</p></figcaption></figure>
