{"id":19261972,"url":"https://github.com/hacksu/khe-2023","last_synced_at":"2025-04-21T17:31:05.988Z","repository":{"id":62483381,"uuid":"560731076","full_name":"hacksu/khe-2023","owner":"hacksu","description":"😍 New Kent Hack Enough!","archived":true,"fork":false,"pushed_at":"2023-01-27T04:09:19.000Z","size":1962,"stargazers_count":2,"open_issues_count":19,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-02-23T18:44:30.117Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hacksu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-02T06:12:46.000Z","updated_at":"2024-05-22T23:34:59.000Z","dependencies_parsed_at":"2023-02-09T20:45:51.544Z","dependency_job_id":null,"html_url":"https://github.com/hacksu/khe-2023","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacksu%2Fkhe-2023","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacksu%2Fkhe-2023/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacksu%2Fkhe-2023/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacksu%2Fkhe-2023/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hacksu","download_url":"https://codeload.github.com/hacksu/khe-2023/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250100316,"owners_count":21374914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T19:29:11.891Z","updated_at":"2025-04-21T17:31:05.418Z","avatar_url":"https://github.com/hacksu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build](https://github.com/hacksu/khe-2023/actions/workflows/pipeline.yml/badge.svg)](https://github.com/hacksu/khe-2023/actions/workflows/pipeline.yml)\n[![Production](https://github.com/hacksu/khe-2023/actions/workflows/health.yml/badge.svg)](https://github.com/hacksu/khe-2023/actions/workflows/health.yml)\n\n# Kent Hack Enough\n\n\nThis is a monorepo that contains all the necessary components to run our annual event.\n\nIt consists of 3 main facets:\n\n### Server\n\nThe Server is where all backend and server logic is defined.\n\nThis consists of defining data structures, interfacing with the database, sending emails, etc.\n\nAs 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](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) is used.\n\n### Staff Management Portal\n\nThe Staff Management Portal is the main interface for admins and organizers to interface with the API.\n\nThis should implement all functionality needed by event organizers.\n- Check-in\n- Approving applicants\n- Responding to Tickets\n- ...etc\n\nBecause of this being a monorepo, the API calls are tighly coupled to the Server API code; allowing full TypeScript intellisense and validation.\n\n### The UI *(library)*\n\nBecause 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.\n\nWith 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.\n\nFor 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 `\u003cRegistrationForm /\u003e` component.\n\nThis 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.\n\n\n## Installation\n\n### Install NodeJS LTS\nhttps://nodejs.org/en/download/\n\n### Clone the Repository\n\n```bash\ngit clone https://github.com/hacksu/khe-2023.git\n```\n\n### Install Dependencies\n```bash\nnpm install\n```\n\n## Usage\n\n### Run in Development Mode\n```bash\nnpm run dev\n```\n\nThis exposes the following endpoints:\n\n#### API\n- http://localhost:5000/api\n\n#### Staff Management Portal\n- http://staff.localhost:5000\n- http://localhost:5001 *(do not use)*\n\n#### Frontend\n- http://localhost:5000\n- http://localhost:5002 *(do not use)*\n\n### Building for Production\n\nDevelopment mode provides hot reloading and various other benefits; but these slow down the performance of the entire project.\n\nIf you want to test the project's real-world performance, you must build it and run it in its production state.\n\n```bash\n# Build for production; minify and condense files.\nnpm run build\n```\n\n### Starting a Production Build\n\nWhen you have built the project, you may run it with the `start` command.\n\n```bash\n# Run the latest build of all projects\nnpm run start\n```\n\n\n### Running Projects Individually\n\nYou can use turborepo's [filter](https://turborepo.org/docs/core-concepts/filtering) argument to only run a specific project.\n\n```bash\n# Only run the API in dev mode\nnpm run dev --filter=@kenthackenough/api\n```\n\n```bash\n# Build the API and the Frontend APP\nnpm run build --filter=@kenthackenough/api --filter=@kenthackenough/app\n```\n\n\n```bash\n# Start the API\nnpm run start --filter=@kenthackenough/api\n```\n\n## Deployment\n\n*Note: If you are conducting a fresh deployment, see the [server setup instruction](./docs/SERVER.md).*\n\n[ IMPLEMENT AND DOCUMENT AUTOMATED DEPLOYMENT ]\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacksu%2Fkhe-2023","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhacksu%2Fkhe-2023","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacksu%2Fkhe-2023/lists"}