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.
Data stores, events and token validation are drawn separately because they connect nearly every service:
- Data stores and events show which service owns which database and topic.
- Identity and Keycloak shows how sign-in and token validation work.
Pages in this section
| Page | What it covers |
|---|---|
| Frontend | Next.js app, per-role theme, its own /api routes. |
| Services | The eight Quarkus services and what each is responsible for. |
| Key components | Component diagrams for the LMS and identity services. |
| Data stores | PostgreSQL, Flyway, Redis. |
| Events | Kafka topics and who publishes and consumes them. |
| Identity and Keycloak | Realm, clients, roles, high availability. |
| Live classes and recording | LiveKit server, egress and automatic recording. |
| Object storage and streaming | Bucket, upload and Range streaming. |
| Networking and ingress | Hosts and routing. |
| Deployment on OKE | Cluster, nodes, images, namespace. |
| Status page | Public 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.