Morphir is a standard language for business logic, FDC3 is a standard language for application interoperability. BankerX is a reference example combining the FDC3 and Morphir projects so that a web application can use the FDC3 protocol to integrate with Morphir based services by speaking FDC3 over REST.
npm i
run the local application...
This project can be used as a reference example for specific FDC3 and Morphir data flows. It can also be used as an example of novel FDC3 and Morphir use cases. In this case, commercial banking, to expand the conception of business value for both projects.
Clone the repo and instal, run the the app locally or from Github pages.
npm i
intent: GetTerms
Context Data
Purchase ('fdc3.purchase')
interface Purchase {
type: string; //'fdc3.purchase'
data: {
amount: number;
vendor: string;
date: string;
time: string;
userID: string; //is there a common identifier for the purchaser? do we even want to include this (or is this too much PII)?
pointOfSale: string; //identifier for the merchant/point of purchase - is there a common identifier
category?: 'Groceries'
| 'Dining'
| 'Home'
| 'Shopping'
| 'Travel'
| 'Fuel';
}
}
//example
{
type: 'fdc3.purchase',
data: {
amount: 30,
vendor: 'My Favorite Vendor',
date: '9/29/2024',
time: '3:28:10 PM',
userId: '[email protected]',
pointOfSale: 'POS_ID',
category: 'Groceries'
}
}
TermsList ('fdc3.termsList')
interface TermsList {
type: string; //'fdc3.termsList'
terms: [Terms];
}
Terms ('fdc3.Terms')
interface Terms {
type: string; //'fdc3.terms
data: {
points: number;
rate: number;
provider: string; //display name of bank providing terms
providerId: string; //identifier of bank providing terms
}
}
//example
{
type: 'fdc3.terms',
data: {
points: 13,
rate: 1,
provider: {
name: 'E*TRADE',
id: 'testApp1',
logo: './images/etrade.png'
}
}
}
intent: MakePurchase (result)
interface PurchaseConfirmation {
type: string; //fdc3.purchaseConfirmation
data: {
provider: Provider;
}
}
//example
{
type: 'fdc3.purchaseConfirmation',
data: {
provider: {
name: 'E*TRADE',
id: 'testApp1',
logo: './images/etrade.png'
}
}
}
List the roadmap steps; alternatively link the Confluence Wiki page where the project roadmap is published.
- Item 1
- Item 2
- ....
The project uses Morphir and FDC3.
Server related code is done with:
- Tapir
- jsoniter-scala
- AWS Lambda
- The CDK for deployment
Run the server locally:
Compile everything:
./mill __.compile
./mill server.run
Run the serverless backend with sam local:
./mill cdk.runSamLocal
- Fork it (https://github.com/finos-labs/bankerX/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
Copyright 2024 FINOS
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0