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 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
...
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. |
...