Skip to content

runemalm/open-banking-poc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

open-banking-poc

A proof-of-concept for integrating with banks to perform AIS and/or PIS according to the PSD2 directive.

Purpose

This project was created partly for my portfolio of projects.

Reach out using the contact details on my portfolio page if you are interested in getting to know more about the project.

Key Features

  • ✅ Simple monolithic architecture.
  • ✅ Prepared for microservices.
  • ✅ One developer per bank integration.
  • ✅ Javascript SDK for website integration.

Architecture

There's a simple monolith backend, which exposes an api for the frontend client to drive bank integration session.

The frontend is a simple SPA application built with React.

There's a JavaScript SDK for easily integrating the session client with any website.

Data Flow

The figure below illustrates the data flow.

The client is a website that uses the JS SDK to open a client widget. This client will make requests to the Sessions backend to drive a user session with a bank. The session backend uses an integration subclass to talk to the bank.

Data Flow Overview

Entities

These are the basic entities:

Session represents the session a PSU (user) has with selected bank to perform an AIS/PIS service session.

Bank represents a bank in a country.

Integration represents a bank integration.

Entities

State Machine

The session is defined and implemented as a state machine.

  • The backend implements states, signals and transiations on the Session entity class.
  • The frontend client maps it's views directly to session states.
  • Each bank integration implements relevant state entry actions in it's subclass methods to make the communication with the bank.

Frontend

The frontend is a JavaScript client SDK built using React and ready to drop-in for easy website integration.

UI

Backend

The backend is written using C# and .NET8. It's a monolith with a simple HTTP API. It uses Hangfire to schedule jobs for running the sessions with the banks asynchronously.

For future scaling, instead of running these jobs with Hangfire they could be run in separate distributed services, or even cloud functions.

You may find the swagger API here.

Bank Integrations

Each bank integration is implemented in a subclass of the StateMachineBase class. Thus, a new bank integration is as simple to add as adding one of these subclasses. You can see an example of a bank integration in the SeSeb01 class.

About

A proof-of-concept demonstrating open banking sessions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published