openIDL V1 - Architecture - Application

openIDL V1 - Architecture - Application

Overall Application Architecture

This section covers current and target designs.

Current architecture with the HDS db.

Application Components

Here we discuss the software components developed for the openIDL system.

User Interface Components

openIDL Common Lib

folder: openidl-common-lib

This is a common component used by other components.

Dependencies

@openidl-org/openidl-common-lib@0.5.8
├── @cloudant/cloudant@4.2.1
├── @ibm-functions/iam-token-manager@1.0.5
├── @sendgrid/mail@7.4.5
├── fabric-ca-client@2.2.9
├── fabric-network@2.2.9
├── ibmcloud-appid@6.1.1
├── log4js@4.3.2
├── mongodb@3.7.2
├── node-vault@0.9.22
├── passport@0.4.1
├── passport-cognito@0.2.2
├── request-promise@4.2.6
└── safe-eval@0.4.1

openIDL Data Call App

folder: openidl-data-call-app

This component serves as the api for the data call ui.

Dependencies

app@1.0.1

├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.7
├── body-parser@1.19.0
├── config@2.0.2
├── cookie-parser@1.4.5
├── cors@2.8.5
├── express@4.17.1
├── express-session@1.17.2
├── helmet@3.21.2
├── http-errors@1.6.3
├── js-yaml@3.14.1
├── lodash@4.17.21
├── log4js@4.5.1
├── moment@2.29.1
├── node-fetch@2.6.5
├── swagger-ui-express@3.0.10
└── uuid@3.4.0

openIDL Data Call Mood Listener

folder: openidl-data-call-mood-listener

This component listens for events on the ledger.

Dependencies

openidl-data-call-mood-listener@1.0.1 
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.5
├── config@2.0.2
├── express@4.16.4
├── log4js@4.5.1
├── sinon@7.5.0
└── uuid@3.4.0

openIDL Data Call Processor

folder: openidl-data-call-processor

This component listens for the consent event and runs the extraction pattern.

Dependencies

openidl-data-call-processor@1.0.1 
├── @cloudant/cloudant@3.0.2
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.6
├── aws-sdk@2.474.0
├── config@2.0.2
├── cron@1.8.2
├── express@4.16.4
├── log4js@4.5.1
├── moment@2.29.1
├── mongodb@3.6.11
├── object-sizeof@1.6.1
├── sleep@6.3.0
└── uuid@3.4.0

openIDL Insurance Data Manager

folder: openidl-insurance-data-manager

This component provides an API to load data into the Harmonized Data Store.

Dependencies

app@1.0.1 
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.6
├── body-parser@1.19.0
├── config@2.0.2
├── cookie-parser@1.4.5
├── cors@2.8.5
├── crypto@1.0.1
├── express@4.16.4
├── express-session@1.17.2
├── helmet@3.21.2
├── http-errors@1.6.3
├── js-yaml@3.14.1
├── log4js@4.5.1
├── node-fetch@2.6.1
├── sort-json-array@0.1.7
├── swagger-ui-express@3.0.10
└── uuid@3.4.0

openIDL Transactional Data Event Listener

folder: openidl-transactional-data-event-listener

This component listens for data arriving on the analytics node and starts the reporting process.

Dependencies

transactional-data-event-listener@1.0.1
├── @cloudant/cloudant@3.0.2
├── @openidl-org/openidl-common-lib@0.5.8
├── @sendgrid/mail@7.4.6
├── aws-sdk@2.474.0
├── config@2.0.2
├── express@4.16.4
├── log4js@4.5.1
├── mongodb@3.6.11
└── object-sizeof@1.4.0

openIDL User Interface

folder: openidl-ui-workspace

This component holds all the UI components for openIDL in an angular workspace.

The dependencies are shared across all projects which are in the projects subfolder.

Dependencies

openidl-ui-workspace@0.0.0 
├── @angular/animations@12.1.5
├── @angular/cdk@12.1.4
├── @angular/common@12.1.5
├── @angular/compiler@12.1.5
├── @angular/core@12.1.5
├── @angular/forms@12.1.5
├── @angular/material@12.1.4
├── @angular/platform-browser@12.1.5
├── @angular/platform-browser-dynamic@12.1.5
├── @angular/router@12.1.5
├── @openidl-org/openidl-common-lib@0.5.8
├── config@3.3.6
├── cookie-parser@1.4.5
├── cors@2.8.5
├── express@4.17.1
├── express-session@1.17.2
├── helmet@3.23.3
├── ibmcloud-appid@6.1.1
├── log4js@4.5.1
├── moment@2.29.1
├── nconf@0.11.3
├── ngx-csv@0.3.2
├── nocache@2.1.0
├── node-fetch@2.6.1
├── passport@0.4.1
├── request-promise@4.2.6
├── rxjs@6.6.7
├── tslib@2.3.1
└── zone.js@0.11.4

openIDL UI

folder: openidl-ui-workspace/projects/openidl-ui

This component provides access to the system for the AAIS and Analytics nodes.

openIDL Carrier UI

folder: openidl-ui-workspace/projects/openidl-carrier-ui

This component provides access to the system for the Carrier nodes.

openIDL Common UI

folder: openidl-ui-workspace/projects/openidl-common-ui

This component provides common code for the UI components.

 

Dependencies

Dependency

Description

Discussion

@angular

UI Framework

 

@cloudant

This is the official Cloudant library for Node.js.

This library is now deprecated and will be end-of-life on Dec 31 2021.

@sendgrid/mail

Twilio SendGrid NodeJS mail service

Can be removed

aws-sdk

AWS SDK for JavaScript

 

body-parser

Node.js body parsing middleware.

 

config

Configuration control for production node deployments

 

cookie-parser

Parse Cookie header and populate req.cookies with an object keyed by the cookie names. Optionally you may enable signed cookie support by passing a secret string, which assigns req.secret so it may be used by other middleware.

 

cors

Node.js CORS middleware

 

cron

cron for node.js

 

crypto

 

Deprecated!  This package is no longer supported and has been deprecated. To avoid malicious use, npm is hanging on to the package name.

It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.

express

Fast, unopinionated, minimalist web framework

 

express-session

Simple session middleware for Express

 

helmet

Helmet helps you secure your Express apps by setting various HTTP headers. It's not a silver bullet, but it can help!

 

http-errors

Create HTTP errors for Express, Koa, Connect, etc. with ease.

 

ibmcloud-appid

Node.js SDK for the IBM Cloud App ID service

 

js-yaml

YAML 1.2 parser and serializer

 

lodash

The Lodash library exported as Node.js modules.  Lodash is A modern JavaScript utility library delivering modularity, performance & extras.

 

log4js

This is a conversion of the log4js framework to work with node.

 

moment

A JavaScript date library for parsing, validating, manipulating, and formatting dates.

 

mongodb

The official MongoDB driver for Node.js.

 

nconf

Hierarchical node.js configuration with files, environment variables, command-line arguments, and atomic object merging.

 

ngx-xac

Helper library for create CSV file in Angular2+

 

nocache

This Express middleware sets some HTTP response headers to try to disable client-side caching.

 

node-fetch

Instead of implementing XMLHttpRequest in Node.js to run browser-specific Fetch polyfill, why not go from native http to fetch API directly? Hence, node-fetch, minimal code for a window.fetch compatible API on Node.js runtime.

 

object-sizeof

Get size of a JavaScript object in Bytes

 

passport

Passport is Express-compatible authentication middleware for Node.js.

 

request-promise

The simplified HTTP request client 'request' with Promise support. Powered by Bluebird.

Deprecated!  We need to replace this.

rxjs

Reactive Extensions Library for JavaScript. 

 

sinon

Standalone and test framework agnostic JavaScript test spies, stubs and mocks (pronounced "sigh-non", named after Sinon, the warrior).

Should be a development dependency

sleep

Add sleep(), msleep() and usleep() to Node.js, via a C++ binding.

 

sort-json-array

Sort an array of JSON objects by a property

 

swagger-ui-express

This module allows you to serve auto-generated swagger-ui generated API docs from express, based on a swagger.json file. The result is living documentation for your API hosted from your API server via a route.

 

tslib

Runtime library for TypeScript helper functions

 

uuid

For the creation of RFC4122 UUIDs

 

zone.js

Implements Zones for JavaScript, inspired by Dart.