Finsemble: Getting Started

Getting Started


Finsemble helps developers build multi-window HTML5 applications for the desktop. Finsemble is built on top of OpenFin's secure operating layer. Finsemble's primary goal is supplying an API for multi-window coordination and collaboration. This allows applications to be "assembled" from loosely coupled components, gaining the benefits of flexibility, scalability and rapid development. This is achieved by use of a "microservices" based runtime which runs behind the scenes on the desktop. The use of microservices reflects Finsemble's secondary goal: desktop extensibility and framework agnosticism as the HTML5 and JavaScript ecosystem continues to evolve (in other words, you can use React, Angular, JQuery or any other tools to build your app!)

Note: Finsemble complements, but does not replace the OpenFin API. Developers retain access to all the full OpenFin API through the "fin" object.

A good place to orient yourself to all the reasons we built Finsemble is our whitepaper: The Future of Desktop Applications. You should also read Finsemble Motivations, which is a higher-level overview of the framework.

To try out a Finsemble application on a Windows desktop, users will find in their "Getting Started" email a link to the ChartIQ Finsemble Demo (although Finsemble is platform independent, both the Demo have only been verified on Windows).

Developers and architects should also look at The Finsemble Architecture Overview. The Finsemble Terminology section provides additional insight into the architecture.

The rest of this "Getting Started" tutorial is oriented to developers wanting to try out Finsemble.

Below explains how Finsemble is packaged:

  1. A seed project is provided to quickly get started with Finsemble. It includes examples to run, modify, and cut-and-paste from. The seed project also serves as a valid template for building your own Finsemble application.
    • If you are unfamiliar with Git or GitHub, see this Introduction to GitHub.
    • To install Git on Windows, download GitHub for Windows. This also a bash-style command terminal (Git BASH) for those who prefer a Linux or Unix environment.
  2. The Finsemble core is a NPM module kept in a private NPM repository. The seed project is already set up to reference the private NPM module (although, an NPM login is required).

The following diagram illustrates the overall packaging:

  1. The seed project requires (i.e., imports) the core Finsemble module.
  2. Upon startup, the Finsemble core looks at configs inside of the seed project to see which components are spawnable.
  3. After startup, the seed-project and the core module function as a unified application (communicating through the underlying Event Router microservice). Getting Finsemble and Understanding Application Startup cover all you need to know for installing and running the seed project. You may want to also read about The Finsemble Build Process to understand what's going on when you type npm run dev into your terminal.

After installing Finsemble, developers should continue with the following tutorials:

The Finsemble CLI also provides a set of "getting started" commands to create code stubs with the proper configuration settings.

Debugging Finsemble explains the pragmatic aspects of debugging under Finsemble, which is very similar to debugging under Chrome (with a few special cases).

A few special tutorials also walk the developer through the use of specific client APIs:

The following client APIs and microservices are currently supported:

Finsemble Client API Description
........................................ ........................................
Authentication Client Provides support for plugging in a custom Authentication componenent before Finsemble startup.
Config Client Provides run-time access to all configuration settings.
Dialog Manager Client Supports spawning user dialogs from any component. Also receives user input from a dialog.
Launcher Client Controls the starting and stopping of all components through the Launcher microservice.
Linker Client Dynamically links and updates common data elements shared between components, through the Linker microservice.
Workspace Client Manages groups of Finsemble windows, including where they are positioned, through the Workspace microservice.
Router Client Routes event messages between components and microservices, through the Router microservice
Storage Client Provides storage across all components and services, through the Storage microservice.
Window Client Enables a window's state to be controlled, including window size and position

Again, Finsemble is built on OpenFin's secure operating layer for desktop HTML, although it is for the most part hidden within a Finsemble wrapper. Looking more at the OpenFin Operating Layer and its JavaScript API will help understand how Finsemble works internally. It is worth noting that Finsemble installation automatically handles the OpenFin installation and dependencies.


Finsemble is built to be extended, but Finsemble's roadmap is a work in progress. A diversity of features and new APIs are now on the drawing board, for future releases. We welcome feedback as we continue to evolve.