Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?


JSA App Development Overview


Use the JSA GUI Application Framework to develop new application modules that integrate with JSA and provide new capabilities.

Applications or apps are small plug-in modules to the GUI Application Framework. Apps serve endpoints from within a secure container to inject the content directly into the JSA web interface.

Each app has its own dedicated memory allocation and a defined amount of CPU resources that are allocated to it.

The main web language that is used to author an application is Python, and the Flask framework is integrated and available for use by the application.

How an Application Runs and Interacts with JSA

JSA applications run inside an isolated Python Flask environment that is independent of the JSA user interface.

The application can also use static images, scripts, and HTML pages.

All interaction with the application is proxied through the JSA user interface. No direct access to network ports or web services is usually permitted.

Figure 1: Application Framework
Application Framework

Apps That Require Internet Access

If the app that you develop requires internet access, you must implement proxy support in your app. Apps can't use the proxy support that is built into JSA.

Types Of App

The JSA GUI Application Framework supports the following app types that are described in the following table.

Table 1: Types Of App

App Type


Areas (or visualizations)

New screen that is presented in a new tab.

Right-click menus

New right click menu options available with the JSA GUI.

Toolbar buttons

New toolbar buttons, with the enabling code that runs from the confines of the app.

Dashboard/Dashboard widgets

New dashboard widgets, with the HTML served from a particular app.

Administrative screens

New Admin tab, configuration, and setup screens.

Hover Over metadata

Injection of hover over metadata into existing hover over areas.

JavaScript page scripts

Injected browser JavaScript functionality specific to an existing JSA GUI screen area.

Resource Bundles

Partial support of Java style key value pair properties files to provide some level of globalization support.

Custom fragments

Inject custom HTML fragments into the JSA UI.

Custom columns

Add columns with custom content to tables in the JSA

The app type content is dynamically injected back into the GUI display.

Apps are packaged as compressed archives (.zip), within the extension archive. You can install and uninstall apps by using RESTful endpoints. More RESTful endpoints exist to control the lifecycle of an app within JSA.


As a best practice, store your app configuration and data in /store because data in this directory is protected during app upgrades.

For more information about JSA application framework REST API endpoints, see GUI Application Framework REST API Endpoints.