Skip to main content

📦 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

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 registration
    • Notification 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

ComponentTechnology
Core ServerGolang
DatabasePostgreSQL
Core ClientReact
Identity ManagementKeycloak
Course Phase ServicesMicroservice stack (custom per phase)

🧭 Responsibilities Breakdown

ComponentResponsibilities
CourseCourse lifecycle, student registration, phase orchestration
Course PhaseParticipant management, phase assessment, storage interface
Course Phase Type Reg.Registering available phase types
ApplicationApplication form handling, assessment
Course ConfiguratorUI for course setup by instructors
Dynamic Phase LoadingRuntime microfrontend loading from phase services
Remote Entry ServiceFetch and serve microfrontend for course phase
Course Phase ServiceCustom logic + optional server/database for each phase