Skip to main content

Architecture

StartupOS is a Next.js frontend and eight Quarkus services behind one ingress. Keycloak, PostgreSQL, Redis, Kafka and LiveKit run in the same Kubernetes cluster. Lesson video and class recordings are stored in OCI Object Storage.

Containers. People reach the Next.js frontend. The browser calls the same host for the pages and for the /api/v1 routes. The ingress sends each /api/v1 prefix to one of eight Quarkus services and the host root to the frontend. The LMS service and the LiveKit server and egress write to and read from OCI Object Storage. LiveKit is reached on its own host.

Data stores, events and token validation are drawn separately because they connect nearly every service:

Pages in this section​

PageWhat it covers
FrontendNext.js app, per-role theme, its own /api routes.
ServicesThe eight Quarkus services and what each is responsible for.
Key componentsComponent diagrams for the LMS and identity services.
Data storesPostgreSQL, Flyway, Redis.
EventsKafka topics and who publishes and consumes them.
Identity and KeycloakRealm, clients, roles, high availability.
Live classes and recordingLiveKit server, egress and automatic recording.
Object storage and streamingBucket, upload and Range streaming.
Networking and ingressHosts and routing.
Deployment on OKECluster, nodes, images, namespace.
Status pagePublic status summary and hidden health endpoints.

How these diagrams are made​

The C4 diagrams are exported from one Structurizr DSL model at build time. Edit architecture/workspace.dsl, run scripts/generate-c4.sh and rebuild. See How these docs are built.

Sources: infra/oci-devops/deploy/ingress.yaml, infra/k8s/*.yaml, services/*/src/main/resources/application.yml.