Skip to content

1. System Overview

Ayush Goyal edited this page Aug 18, 2022 · 1 revision

Background

To understand our services, you'll need to understand the following terminology:

  • monorepo: a single repository that stores all of your code and assets for every project
  • microservices: an architectural approach where software is composed of small, independent services that communicate over well-defined APIs

Essentially, this repo is a monorepo that holds all of our backend microservices together. These microservices are designed in a way to communicate with each other.

Current Services

As explained in the motivation section, each service in our repo is hosted as a separate server. Each of these servers are hosted as subdomain of api.hexlabs.org. To see each services endpoints and how to format the request, visit our docs site. Here is a list of our current services, their URL, and description:

  • auth (auth.api.hexlabs.org)
    • handles user authentication through Google Identity Provider / Google Firebase
    • allows frontend services to retrieve tokens and login/logout users
  • files (files.api.hexlabs.org)
    • handles uploading and managing files for user (like resume)
    • allows admins to view and download files
  • hexathons (hexathons.api.hexlabs.org)
    • generic service to manage our events (hexathon covers hackathon, makeathon, etc.)
    • manages the event name and whether it's active or not
    • keeps track of participant interaction during an event (ie. when they visit a workshop, get food, attend a tech talk)
    • handles checking in users to our events when they first arrive
  • notifications (notifications.api.hexlabs.org)
    • manages sending user notifications to platforms like email, sms, slack
  • registration (registration.api.hexlabs.org)
    • handles user registration and stores application information
    • allows us to create new application branches and edit application questions
  • users (users.api.hexlabs.org)
    • handles user information like name, demographic, etc.
    • handles companies and whether a user (like sponsor) is from a certain company
    • handles team management and joining/leaving a team
Clone this wiki locally