This project provides a fully open source implementation of the FDC3 interoperability standard. Including:
- A fully featured and secure electron desktop agent featuring:
- intent resolution
- channel linking
- directory search
- A local file-based app directory implementation
If you are an Electron and/or Web Dev new to FDC3, it may be helpful to check out this primer.
Nick Kolba (Connectifi) and Seb M'Barek (Norman and Sons) presented FDC3-Sail at the Open Source In Finance Forum (OSFF) in New York in December 2022. They showed how you could git-clone FDC3-Sail, run it and play with all the apps in the FINOS App Directory. They also showed how to build apps and share context data.
If you haven't already, check out their demo here: https://youtu.be/5VJzftderO0
- FDC3-Sail is an Electron application built from the Vite Electron Builder Boilerplate
- The UI for the desktop agent is built using React MUI.
- All remotely hosted content is run in BrowserView following electron security best practices.
The following libraries are used:
- Electron cross-platform desktop framework
- electron-builder for packaging, distribution and auto-updates
- Vite for building, running and hot-reloading
- React for UI rendering
- Vitest and React Testing Library for testing
- Playwright for test automation
- TypeScript for type safety
- ESLint for linting
- Prettier for code formatting
- nano-staged and simple-git-hooks for code commits
directory/
- for local app directoriespackages/main
- the main Electron application, has access to Nodepackages/preload
- preload scripts for web renderers. Bridges the frontend ui to the main process through events and apispackages/renderer
- the parts of the desktop agent UI built with React, isolated from main app, and shown in a window on the desktopchannelPicker
- UI for the channel pickerhomeView
- UI for the default home viewintentResolver
- UI for the intent resolver windowsearchResults
- UI for the searchResults windowsessionView
- UI for the sessionView windowtopNavigation
- UI for the Top Navigation that includes the Tabs, channel picker button, and Dev Tools Menu.
npm install
npm start
This will use the FINOS app directory at https://directory.fdc3.finos.org/v2/apps
- Install dependencies:
npm install
-
Create your own local App directory manifest .e.g.
local.v2.json
in the/directory
folder -
Set the environment variable to use this directory:
export SAIL_DIRECTORY_URL=directory/local.v2.json
- Start the FDC3 application:
npm start
Other useful commands:
npm start
/npm run watch
- Start the Electron app in dev mode.npm run compile
- Build the app for local debugging only.npm run lint
- Lint the code.npm run typecheck
- Run a TypeScript check.npm run test
- Run tests for all parts of the application, including end-to-end tests.
To join the Electron FDC3 Desktop Agent & App Directory mailing list please email fdc3-sail+subscribe@lists.finos.org.
- Fork it (https://github.com/finos/fdc3-sail/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Read our contribution guidelines and Community Code of Conduct
- Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool (or EasyCLA). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.
Need an ICLA? Unsure if you are covered under an existing CCLA? Email help@finos.org
Copyright 2022 FINOS
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0