Before jumping directly into coding, we did a thorough research in the followings:
- Authenticating the user securely in the app via various modes (OAuth 1.0a, OAuth 2 + Open ID connect using an external server). Authentication Modes
- Explored major use-cases for Account Information Service Provider (AISP) and Payment Initiation Service Provider (PISP).
- Discussed some advanced use cases:
- Recommend products to the users based on their transaction history. Eg.: recommending better deals, insurances, etc.
- Targeted Ads based on the policies and products users own.
- Provide users with analytics in terms of graphs, pie charts, etc.
- Watched tutorials and read documentation to understand how both the approaches work and what would work best for us.
- Implemented Kotlin/Native Vanilla Clean Architecture TDD Project.
- Implemented Flutter Vanilla Clean Architecture TDD Project.
- After a long discussion about pros and cons of both, we decided to go ahead with Kotlin/Native.
This is a Kotlin Multi-platform Project. The project contains 3 directories: common, androidApp, iosApp.
It is a Kotlin/Native module to share code across multiple platforms (ios, android, windows, etc). It is further divided into three modules:
- androidMain : Implementation of Android specific backend code used by
commonMain
. - iosMain : Implementation of ios specific backend code used by
commonMain
. - commonMain: Common code across all platforms.
It is the core library module based on MVVM Clean Architecture using LiveData. It is imported as .jar
in an android application and as .framework
in an ios application.
This module contains -
- The view model, data and domain layers
- All the open bank project api interaction is implemented in this module. Note that this open banking app is currently referring to Open Bank Project.
- View Models are located here
- All the api and data implementation is located here
- Use cases are located here
It is an Android module which implements a UI layer for the android app and subscribes to view models in common
to fetch data.
It is the ios project which implements a UI layer for the ios app and subscribes to view models in common
to fetch data.
Further, the open-banking-app is built on top of Open Bank Project with sandbox: https://apisandbox.openbankproject.com/
CONSUMER_KEY
= lxhlkssvfgoheqjdhdr4tq1lkj5h5jklhn2rqxd0
API_HOST
= https://apisandbox.openbankproject.com/
Demo Credentials:
- username: ankurs287@gmail.com
- password: Ankurs287@gmail.com
- Authenticate user via Open Bank Project (OBP)
- Sign up user on OBP
- Fetch all accounts of a user
- Fetch account balances
- Create a transaction request
- Fetch transaction requests made by an account
- Fetch all the transactions (paging support)
- Fetch a particular transaction
- Fetch all debit/credit cards
- Fetch all the supported banks
Project Wiki with documentation: https://github.com/openMF/open-banking-app/wiki
Project Code: https://github.com/openMF/open-banking-app
App Screenshots: https://drive.google.com/drive/folders/1nSyGSLbxsq7xFthGRJHm7XBg11k2x-No?usp=sharing