Overview
Install Guide
Admin User Guide
Integration Guide
Contribute
Overview
Install Guide
Admin User Guide
Integration Guide
Contribute
  • Overview
  • Install Guide

    • Overview
    • Quick Start
    • Distributions
    • Development Installation
    • Production Installation
    • Configuration
    • Installation Modes
  • Admin User Guide

    • Overview
    • Projects
    • Subjects
    • Skills
    • Self Reporting
    • Skills Catalog
    • Skill Groups
    • Description Editor
    • Quizzes and Surveys
    • Admin Groups
    • Badges
    • Global Badges
    • AI Assistant
    • Learning Path
    • Progress and Ranking
    • Icons
    • Levels
    • Users
    • Metrics
    • Notifications
    • Inception
    • Contact Admins
    • Settings
    • Accessibility
  • Training Participation Guide

    • Overview
    • Training Portfolio
    • Take a Training
    • Accessibility
  • Integration Guide

    • Overview
    • Client App Integration
    • Authentication
    • Programmatic Endpoints
    • Legacy Frameworks
  • Open Source Contributions

    • Contribution Guidelines
    • Architecture
    • Development Environment
  • Release Notes

    • Overview
    • Dashboard and API Release Notes
    • Client Libraries Release Notes

Architecture

This section explains how the code is structured and how it relates to deployed daemons and artifacts. Before reading further, please ensure you are familiar with the Install Guide, the Dashboard User Guide, and the Integration Guide.

SkillTree's skills-service is designed with minimal runtime requirements. You can start the service with zero configuration other than the datasource properties required to connect to an available PostgreSQL database. Please visit the Install Guide to better understand your installation options.

A standard production installation of the skills-service requires the following infrastructure:

  • PostgreSQL - Relational store for project definitions and skill events.
  • RabbitMQ STOMP Brokers - Used to support WebSocket functionality.

SkillTree's skills-service is configured to connect directly to these PostgreSQL and STOMP brokers.

Dashboard with Integrated Application

Integrated applications utilize skills-client libraries published on public NPM repositories. These libraries act as thin wrappers around an iframe tag, fetching the Skills Display views and their associated data directly from the skills-service application. Consequently, the Skills Display is served as its own dedicated URL from the skills-service dashboard application and embedded into an iframe inside the client's browser. These underlying details are completely transparent to users of the skills-client libraries.

The skills-client libraries also enable integrators to report skill events. Skill reporting utilities call the Report Skill Event Endpoint exposed by the skills-service.
Alternatively, integrators can choose to call this endpoint directly. When using the client libraries, users can register for global events to receive notifications whenever a skill event is reported. The event response returns a result object containing event metadata and any achievements triggered by the event.

This is where WebSocket integration becomes critical. External clients may report skill events directly via the REST endpoint, and WebSockets are utilized to propagate the outcome of those events instantly to all registered clients.

SkillTree Repositories

  1. skills-service: Contains the core code for the skills service and dashboard. This is where the majority of code changes occur.
  2. skills-client: Client JavaScript libraries providing skill event reporting utilities and the thin iframe-based wrapper for the Skills Display.
  3. skills-docs: The documentation repository—which you are reading right now!
  4. skills-stress-test: A web-based application used to facilitate stress testing against the SkillTree service.
  5. call-stack-profiler: A Groovy annotation-driven, in-code profiling utility used by the services.
  6. skills-client-examples: Simple integration examples demonstrating how to use the client libraries.
Prev
Contribution Guidelines
Next
Development Environment