Skip to main content

Services

The backend is eight Quarkus 3.15.1 services on Java 21. Each one is a Maven module under services/, a container image, a Deployment and a Service named after the module. Each listens on port 8080 and owns one PostgreSQL database.

ServiceDatabaseResponsibility
Identitystartupos_identityUsers through the Keycloak admin API, tenants (spokes), audit log, platform settings, cross-tenant permissions, CSV import of founders and mentors.
Onboardingstartupos_onboardingFounder registration, enrolment and ventures.
Mentorshipstartupos_mentorshipMentors, mentor-venture matches, session booking, cancellation and completion, join tokens for session video rooms.
Programstartupos_programProgrammes, cohorts, milestones, health scoring, graduation, scheme directory.
LMSstartupos_lmsCourses, modules, lessons, video upload and streaming, quizzes, assignments, peer review, forum, live classes, recordings, certificates, leaderboard.
Analyticsstartupos_analyticsAdmin, coordinator and CM Office dashboards. Reads startupos_lms for learning data.
AI Copilotstartupos_copilotConversational answers grounded in programme data, with an audit trail. Calls an OpenAI-compatible endpoint.
Notificationstartupos_notificationsTurns platform events into notifications.

The mapping of ingress prefixes to services is in Networking and ingress. The per-service API reference is generated from the code, see API.

Shared library​

libs/common-models holds code every service uses: the event classes, RoleEnforcementFilter and @RequiresRole, HeaderIdentityPolicy and a startup guard that refuses to start a production service with header identity enabled.

Calls between services​

Four service-to-service reads exist. All use a Keycloak client-credentials token.

  • Onboarding calls Program for a founder's next milestone.
  • AI Copilot calls Onboarding, Program and Mentorship for grounding, and Program for the scheme catalogue.

Sources: services/*/src/main/resources/application.yml, services/ai-copilot-service/src/main/resources/application.yml (SCHEME_CATALOG_URL), .kiro/steering/auth-rollout.md (service-to-service paths), infra/postgres/init-multiple-dbs.sh. The four service-to-service reads are taken from the steering note and one configuration key. They were not traced call by call, so treat the list as unverified for completeness.