# 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 (opens new window) - Relational store for project definitions and skill events.
- RabitMQ Stomp Brokers (opens new window) - Used to support WebSocket (opens new window) functionality.
SkillTree's skills-service is then configured to use PostgeSQL and Stomp Brokers.
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
- skills-service (opens new window): has code for the skills service and dashboard. This is where the majority of code changes occur.
- skills-client (opens new window): client JS libraries that provide skill event reporting utilities and a thin iFrame-based wrapper for the Skills Display.
- skills-docs (opens new window): Documentation, you are reading this now!
- skills-stress-test (opens new window): Web-based application that facilitates stress tests against the SkillTree service.
- call-stack-profiler (opens new window): Groovy annotation-driven in-code profiling utility used by the services.
- skills-client-examples (opens new window): Simple Integration examples using client libraries.