# Applets

Applets are the foundation of extending SanteDB. An applet can contain:

* Custom user interface components (using CSS, JavaScript, AngularJS, and HTML5)
* Custom Business Rules written using the SanteDB Business Rules engine
* Custom Reports written using the embedded reporting engine (those which operate in all SanteDB environments)
* Clinical Decision Support Rules (CDSS) written using XML formatted when/then commands
* Custom View-Model files which instruct SanteDB how to render JSON to consumer applications
* Translations and localization settings for a particular locale
* Custom matching configurations used for the SanteDB Matching Algorithms
* Clinical Template Definitions which contain the validation rules, entry and render forms, and structure of clinical data

### Recommended Tooling

In order to develop SanteDB applets, you'll need a few tools:

* **The SanteDB Software Development Kit** - Contains the necessary tools to debug and package your applet.
* **An HTML5 + JavaScript Editor -** We recommend [Visual Studio Code](https://code.visualstudio.com/), but any editor will do the trick
* **(Optional) An XML Editor -** An XML editor is highly recommended, especially if you're going to be doing heavy editing of SanteDB's CDSS, BI, DataSet, ViewModel or Subscription services.

### Getting Started

Getting started with SanteDB applet authoring is easy

1. Download and install the latest SanteDB SDK: <https://github.com/santedb/santedb-sdk/releases>
2. Clone the starter applet source code: <https://github.com/santedb/applet-starter>
3. Start your favorite code editor!

To test your applet, you can run the Applet Debugging Environment (ADE)&#x20;

```
sdb-ade --applet=path_to_source_code --ref=org.santedb.core --ref=org.santedb.uicore ...
```

## Topics

{% content-ref url="/pages/-MjGAYQtgecTsMf9ZIYW" %}
[Applet Use and Lifecycle](/developers/applets/applet-use-and-lifecycle.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MjGCXTX1dKK-dAWcRju" %}
[Applet SDK Components](/developers/applets/applet-sdk.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LZG0oIU1C8NnMC8X0WO" %}
[Applet Structure](/developers/applets/applet-structure.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MGdO0MzlrC3CUt\_eVp8" %}
[JavaScript API](/developers/applets/javascript-api.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LvhK4yKwi11kojkrjJE" %}
[Business Intelligence Assets](/developers/applets/business-intelligence-bi-assets.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lx5\_RARCi5WkUpv8jzA" %}
[Localization](/developers/applets/localization.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lx5dt3m21sDU-49ys-S" %}
[Customization & Branding](/developers/applets/customization-and-branding.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M73F\_HthmXu\_hEulUln" %}
[Assets](/developers/applets/assets.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LZBPlTWQ\_Xeq89Z5lAA" %}
[AngularJS](/developers/applets/angularjs.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LZG11jeygO6gnIhcLl0" %}
[Clinical Decision-Support](/developers/applets/cdss-protocols.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LZG2X1aN0b9baM48\_Mz" %}
[Business Rules](/developers/applets/business-rules.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Liy8q4uEanJFhrKnPFR" %}
[Dataset Files](/developers/applets/distributing-data.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LwOIgZYXXtaZAajSa0D" %}
[Applet Solution Packages](/developers/applets/applet-solution-packages.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MACskYH-uAh6BGs40iT" %}
[Recipes](/developers/applets/recipes.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.santesuite.org/developers/applets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
