/khe-2023

😍 New Kent Hack Enough!

Primary LanguageTypeScript

Build Production

Kent Hack Enough

This is a monorepo that contains all the necessary components to run our annual event.

It consists of 3 main facets:

Server

The Server is where all backend and server logic is defined.

This consists of defining data structures, interfacing with the database, sending emails, etc.

As part of this environment, the API has built-in reverse proxying to the other components. This is disabled when deployed to the server, as the high-performance NGINX reverse proxy is used.

Staff Management Portal

The Staff Management Portal is the main interface for admins and organizers to interface with the API.

This should implement all functionality needed by event organizers.

  • Check-in
  • Approving applicants
  • Responding to Tickets
  • ...etc

Because of this being a monorepo, the API calls are tighly coupled to the Server API code; allowing full TypeScript intellisense and validation.

The UI (library)

Because of the need for us to have a different website each year due to our theming practices; the App project within this monorepo is intended to act as a baseline for all our websites. It shall implement all logical functionality and provide useful component exports that can be consumed by other projects.

With this, one will be able to import @kenthackenough/ui as a dependency in any other NextJS project and it will be able to use these components.

For example, the Registration Form is usually very complicated and requires numerous validation steps to ensure a proper user experience. Because of this, this is offloaded here in the monorepo where one can have excellent TypeScript intellisense and validation as part of having the API in the same project. Thus, one would define the Registration Form here (but void of any major styling), allowing the form to be imported into the annual website as a simple <RegistrationForm /> component.

This design style ensures that any logical code is located within this repository, and thus removes the potentiality of messing up the entire website simply by changing the yearly styles.

Installation

Install NodeJS LTS

https://nodejs.org/en/download/

Clone the Repository

git clone https://github.com/hacksu/khe-2023.git

Install Dependencies

npm install

Usage

Run in Development Mode

npm run dev

This exposes the following endpoints:

API

Staff Management Portal

Frontend

Building for Production

Development mode provides hot reloading and various other benefits; but these slow down the performance of the entire project.

If you want to test the project's real-world performance, you must build it and run it in its production state.

# Build for production; minify and condense files.
npm run build

Starting a Production Build

When you have built the project, you may run it with the start command.

# Run the latest build of all projects
npm run start

Running Projects Individually

You can use turborepo's filter argument to only run a specific project.

# Only run the API in dev mode
npm run dev --filter=@kenthackenough/api
# Build the API and the Frontend APP
npm run build --filter=@kenthackenough/api --filter=@kenthackenough/app
# Start the API
npm run start --filter=@kenthackenough/api

Deployment

Note: If you are conducting a fresh deployment, see the server setup instruction.

[ IMPLEMENT AND DOCUMENT AUTOMATED DEPLOYMENT ]