Skip to content
Ayush Goyal edited this page Aug 18, 2022 · 5 revisions

Welcome to HexLab's API wiki! This documentation covers most of the information you'll need about how this system works and how to develop on it.

Motivation

Before this repo and initiative was started in early 2022, all of HexLab's projects existed with their own separate client/server systems. Each individual project (ex. registration, prizes, check-in, etc.) had their own repo with a server folder holding the backend code and the frontend folder with a react client. On top of this, each server had their own individual authentication code, and as such, a user would have to login each time individually they switched to use a different tool.

All of HexLab's services were deployed through a Kubernetes cluster in Google Cloud through beekeeper and beehive. This system provided an extremely robust and scaleable approach to managing our various servers. However, as the people responsible for this development began to leave our organization, the system fell out of development and it became extremely tough to manage our infrastructure. After all, Kubernetes is a very powerful platform, but has a steep learning curve and requires an extensive amount of management.

As HexLab's services and offerings began to grow, we saw an increased need for service-to-service communication (ex. prizes wanting to check if a user was registered for an event, timber wanting to give participants points for submitting a project, etc.). As each server handled authentication separately and their authentication methods weren't consistent, it was often tough or "jank" to facilitate this communication.

New Design

Eventually, after months of research, we decided on the system you see today. All of our backend services exist in a monorepo, but each server is deployed and managed differently through a microservices architecture. This organization allows all the code to live in one repo where service-to-service communication can be easily handled and common libraries can be easily shared.

We have worked to sunset the old platform, and move towards a simpler approach with Google Cloud Run and Cloudflare Pages.

Attribution

This project was inspired by HackIllinois API repository.

Clone this wiki locally