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.
| Service | Database | Responsibility |
|---|---|---|
| Identity | startupos_identity | Users through the Keycloak admin API, tenants (spokes), audit log, platform settings, cross-tenant permissions, CSV import of founders and mentors. |
| Onboarding | startupos_onboarding | Founder registration, enrolment and ventures. |
| Mentorship | startupos_mentorship | Mentors, mentor-venture matches, session booking, cancellation and completion, join tokens for session video rooms. |
| Program | startupos_program | Programmes, cohorts, milestones, health scoring, graduation, scheme directory. |
| LMS | startupos_lms | Courses, modules, lessons, video upload and streaming, quizzes, assignments, peer review, forum, live classes, recordings, certificates, leaderboard. |
| Analytics | startupos_analytics | Admin, coordinator and CM Office dashboards. Reads startupos_lms for learning data. |
| AI Copilot | startupos_copilot | Conversational answers grounded in programme data, with an audit trail. Calls an OpenAI-compatible endpoint. |
| Notification | startupos_notifications | Turns 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.