📦 Subsystem Decomposition
This document describes the subsystem architecture of the PROMPT Core Platform. It outlines the core components, their technologies, responsibilities, and how they interact with each other and with external services.
🧩 Overview
The PROMPT platform is composed of two main subsystems:
Prompt Core Server (Golang + PostgreSQL)
Prompt Core Client (React)
These components form the foundation of the course management platform. Both client and server are integrated with Keycloak for identity and access management.

Subsystem Decomposition for the PROMPT Core. The grey color represents off-the-shelf external components. The green color represents a course phase type implemented as an independent service, which is a placeholder for a concrete course phase type, such as intro course or team allocation. Blue highlights the core components.
⚙️ Core Subsystems
🖥️ Prompt Core Server
The server is built in Go (Golang) and uses PostgreSQL as its persistence layer. Key server-side components include:
Course Handles course creation and configuration, student registration, and orchestration of the course phases.
Course Phase Manages individual course phases (e.g., intro course, team allocation). This component:
Manages participants and assessments (pass/fail).
Provides basic storage capabilities for course-phase-specific or participant-specific data.
Delegates phase-specific business logic to external services.
Course Phase Type Registration Registers available course phase types and makes them accessible to the
Course Phase
and client-side components.Application Manages the student application workflow including:
Application form logic and assessment
Integration with the
Course Signup Service
for student registrationNotification via the
Mailing
component
🧑🎓 Course Phase Services
Each course phase type (e.g., intro course or team allocation) is implemented as an independent service. These services provide the logic, UI, and additional storage required for their specific course phase.
Each service may include its own server and database.
They interact with the core via registered interfaces and use the core-provided storage if needed.
🌐 Prompt Core Client
The client is built in React and communicates with the core server and course phase services. Main components include:
Course Configurator Allows instructors to create and configure courses. Instructors can:
Select and order course phases
Define student and data flow between phases
Dynamic Phase Loading Loads React-based microfrontends from registered course phase services at runtime using the Remote Entry Service. This:
Dynamically integrates phase-specific UIs into the core UI
Ensures that students and instructors see relevant course phase interfaces
Student Application Provides the frontend for students to apply for a course. Communicates with the
Application
component on the server.
🛠️ Technology Stack
Component |
Technology |
---|---|
Core Server |
Golang |
Database |
PostgreSQL |
Core Client |
React |
Identity Management |
Keycloak |
Course Phase Services |
Microservice stack (custom per phase) |
🧭 Responsibilities Breakdown
Component |
Responsibilities |
---|---|
|
Course lifecycle, student registration, phase orchestration |
|
Participant management, phase assessment, storage interface |
|
Registering available phase types |
|
Application form handling, assessment |
|
UI for course setup by instructors |
|
Runtime microfrontend loading from phase services |
|
Fetch and serve microfrontend for course phase |
|
Custom logic + optional server/database for each phase |