# Structure

The frontend of our application consists of:

* **Several user-facing pages:**
  * A **home page** that includes several sections:
    * **Landing:** this is what users first see when visiting our site!
    * **About:** a brief description of what IrvineHacks is
    * **Recruiting mentors and volunteers:** to help make our event a success, we recruit both mentors and volunteers
    * **Frequently asked questions\*:** questions our hackers ask often or should know about are included here
    * **Sponsors\*:** organizations that assist us with funding for our hackathons
    * **Partners\*:** organizations within UCI that provide workshops
  * **Resources\*:** contains various starter packs and resources to assist hackers in developing their projects
  * **Schedule:**
    * **Countdown:** this is a countdown that counts down to the hacking starts time and automatically transitions to a new countdown to hacking ends
    * **Schedule\*:** this contains the list of events that will be taking place at the hackathon
  * **Login:**
    * We provide a form for the user to enter their email. If it is a UCI email, we redirect them to UCI Shibboleth authentication. Otherwise, we send them a passphrase with SendGrid and redirect them to another form to enter the passphrase they received.
  * **Application:**
    * **Preface:** To ensure that applications know the logistical details of IrvineHacks (particularly the fact that it is *not overnight*), we provide a preface that applicants must acknowledge before proceeding
    * **Form:** When applicants apply to our hackathon, they must complete an application form.
    * **Applications closed:** When the application deadline passes, we show a message about applications being closed instead of the form.
  * **Portal:**
    * This is where applicants can view the status of their application, whether they have signed the waiver, and confirm their attendance to the hackathon.
* **Administrative Pages:** built with [Cloudscape](https://cloudscape.design/) UI
  * **Dashboard:** A dashboard showing a summary of applicants and their statuses
  * **Applicants:** Allows organizers to view applicant data provided by the application form, view an applicant's status, and declare whether an applicant is accepted, rejected, or waitlisted
  * **Participants:** Displays the following list of participants in the hackathon and provides barcode scanning functionality to check them in for the day:
    * Hackers
    * Mentors
    * Volunteers
    * Judges
    * Sponsors
    * Workshop leads
  * **Events:** Dedicated to checking in participants for workshops
