Overview
Install Guide
Dashboard User Guide
Integration Guide
Contribute
Overview
Install Guide
Dashboard User Guide
Integration Guide
Contribute
  • Overview
  • Install Guide

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

    • Overview
    • Projects
    • Subjects
    • Skills
    • Self Reporting
    • Skills Catalog
    • Skill Groups
    • Description Editor
    • Quizzes and Surveys
    • Admin Groups
    • Badges
    • Learning Path
    • Progress and Ranking
    • Icons
    • Levels
    • Users
    • Metrics
    • Inception
    • Contact Admins
    • Settings
  • 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 will dive into how the code is arranged and how that code relates to the deployed daemons and artifacts. Before you read this section please make sure that 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 SkillTree skills-service with zero configuration other than datasource properties for connecting to an available PostgreSQL database. Please visit the Install Guide to better understand your installation options.

Let's now focus on what a production deployment would look like. A production installation of the skills-service will require the following infrastructure:

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

SkillTree's skills-service is then configured to use PostgeSQL and Stomp Brokers.

Dashboard with Integrated Application

Integrated clients utilize skills-client libs posted on the public NPM repositories. These libraries are very thin wrappers around an iFrame tag, they simply retrieve the Skills Display views and its associated data from the skills-service application. What that means is that the Skills Display is served as its own dedicated url from the Dashboard application of the skills-service and then inserted into an iFrame tag on the client's browser. Of course all of these details are 100% hidden from the skills-client library users.

The skills-client libraries also enable integrators to report skill events. Skill reporting utilities will call the Report Skill Event Endpoint which is exposed via the skills-service.
SkillTree integrators can also call the Report Skill Event Endpoint directly. Using the skills-client libraries users can register for global events so they can be notified any time a skill event is reported. An event response receives a result object that contains metadata about the event and the achievements that this event may have triggered. This is where WebSocket integration is critical. External clients may report skill events directly via the Report Skill Event Endpoint. WebSockets are utilized to propagate the outcome of that event to all the registered clients.

SkillTree Repositories

  1. skills-service: has code for the skills service and dashboard. This is where the majority of code changes occur.
  2. skills-client: client JS libraries that provide skill event reporting utilities and a thin iFrame-based wrapper for the Skills Display.
  3. skills-docs: Documentation, you are reading this now!
  4. skills-stress-test: Web-based application that facilitates stress tests against the SkillTree service.
  5. call-stack-profiler: Groovy annotation-driven in-code profiling utility used by the services.
  6. skills-client-examples: Simple Integration examples using client libraries.
Prev
Contribution Guidelines
Next
Development Environment