App Catalog (Finsemble Flow)

App catalog on GitHub

The app catalog is a UI component designed to manage a large application library. Use the app catalog to provide your end users with access to the applications they need to do their work. End users use the app catalog to add applications to their advanced app launcher.

The app catalog aids in discoverability and searchability, making it easy for end users to select the apps that are most relevant to their work. Applications are displayed in carousels so that users can see what is available to them. Users can also search or filter apps by tags.

Note: At this time, the app catalog is designed to work with HTML applications only. The app catalog does not support native applications.

FDC3 App Directory

The app catalog is supplied information from a RESTful API server that you build. The app catalog is designed to read data adhering to the FDC3 specification.

FDC3 is an emerging taxonomy for interoperability shared by several leading financial institutions. The FDC3 App Directory provides a secure identity for application hubs. Read more about FDC3 App Directories for more information about this specification. The app catalog supports FDC3 version 1.0.0.

As an example, we've supplied a lightweight implementation of an FDC3 App Directory. We use this for testing the app catalog, and supply it as a starting point for your own efforts. Please see Finsemble's FDC3 Application Directory Web Service repo here.

The FDC3 application specification defines how you will present application data to your end users. However, there are a few Finsemble-specific fields that are important for the app catalog. These are defined in this example:

{
        "name": "Welcome Component", // String. The name of your component to be displayed in the app catalog.
        "type": "component", // At the moment, the only value supported for the type field is "component." In the future, this field might allow for a broader range of data to be displayed and delivered via the app catalog.
        "entitled": true, // Boolean. If true, the end users can add the application to the advanced app launcher. If false, they cannot access the application.
        "description": "This is the component that welcomes you to Finsemble. It also links you to the documentation. We encourage all users to read our documentation.", // String. This is the description of the component displayed to the end users .
        "appId": "welcome-comp", // String. The unique identifier for a specific application instance.
        "manifest": "{\"window\":{\"url\":\"http://localhost:3375/components/welcome/welcome.html\",\"affinity\":\"workspaceComponents\",\"frame\":false,\"resizable\":true,\"autoShow\":true,\"top\":\"center\",\"left\":\"center\",\"width\":400,\"height\":432},\"component\":{\"displayName\":\"Welcome Component\",\"spawnOnStartup\":false,\"preload\":\"http://localhost:3375/preloads/zoom.js\"},\"foreign\":{\"services\":{\"windowService\":{\"allowSnapping\":true,\"canGroup\":true,\"allowAutoArrange\":true,\"allowMinimize\":true}},\"components\":{\"App Launcher\":{\"launchableByUser\":true},\"Window Manager\":{\"showLinker\":true,\"FSBLHeader\":true,\"persistWindowState\":true,\"title\":\"Welcome to Finsemble\"},\"Toolbar\":{\"iconClass\":\"ff-component\"}}}}", // String. This must be the stringified object of the config supplied in components.json.
        "manifestType": "Finsemble", // String. Currently, only "Finsemble" type is supported, but future implementations might include additional types as the FDC3 standard becomes more prevalent.
        "version": "3.0.1", // String. Version of the application.
        "releaseNotes": "This is the only version of the Welcome Component.", // The app catalog shows release notes to any user viewing a specific app. This is the field to supply those notes. i.e., "Fixed a bug where Welcome Component wasn't maxmizing correctly."
        "tooltip": "Welcome component", // String. The tooltip description.
        "images": [ // Array of objects. An array of images displayed to the user in the app catalog carousel.
            {
                "url": "https://i.imgur.com/7T4Zeqi.png", // The location of the image for the carousel.
                "tooltip": "Welcome Component" // The hover tooltip displayed when hovering over the image in the carousel.
            }
        ],
        "tags": [ // Array of strings. An array of tags attached to the application; searchable by the end user.
            "Welcome",
            "App",
            "Documentation"
        ],
        "contactEmail": "info@cosaic.io", // String. Email set to receive inquiries about the application.
        "supportEmail": "support@finsemble.com", // String. Email set to field support questions about the application.
        "publisher": "ChartIQ", // String. The name of the company that owns the application.
        "icons": [ // Array of objects. An array of the icons used for the application. The 0th icon listed in the array will be treated as the app's main icon and displayed in an "app card."
            {
                "url": "https://i.imgur.com/DCljkMy.png", // The location of the image for the icon.
            }
        ],
        "url": "$applicationRoot/components/welcome/welcome.html" // The URL location of the application.
    }

Note: The app catalog makes use the App Directory specification with some proprietary changes. These changes are as follows:

  • Currently, all of the fields in the application spec are required.
  • On first load, the app catalog grabs all apps from the /v1/apps endpoint.
  • All the apps are loaded into memory when initially pulled from the server, whereas the FDC3 app specification defines an endpoint to receive information about a single app (by appId) via POST and add it to, or update it within, the set of available components. When the catalog loads an app's showcase page, the information is retrieved from memory and no updates or additions are currently supported via calls to /v1/apps/{appId}.
  • The FDC3 spec does not define a set of parameters for using the /v1/apps/search endpoint. Our implementation sends the search text and any selected tags. The /v1/apps/search endpoint is responsible for returning filtered information based on those parameters which the catalog displays.
  • The FDC3 spec also does not define an endpoint for fetching available tags. Our implementation expects an endpoint (/v1/tags/) that should return an array of all possible application tags.
  • Currently, getting the application manifest from an http endpoint is not supported. We plan to add this support soon.