Google Summer of Code 2021
Fineract-CN Mobile Wallet
Fineract-CN Mobile Wallet is an Android-based framework for digital wallet use cases based on top of the Apache Fineract-CN platform, it is a new framework that is added to our list of great projects this year. The tagert of this project is to create a framework that follows the clean architecture, a core library module which can be used as a dependency in any other wallet based project and a reference application to demonstrate all these use cases.
Fineract-CN Mobile Wallet is a new framework, previous Mobile Wallet was based on Fineract 1.x platform. Mifospay was the reference application of the Fineract 1.x Mobile Wallet. The previous Mobile Wallet has a core library integrated with Fineract1.x, Self Service APIs and PaymentHub.
The whole project is going to follow clean architecture which is the best architecture for KMM(Kotlin Multi-platform Mobile) and also we're going to use some different libraries than our previous Android projects, so that in future we can share as much code as possible on the KMM implementation.
1. Core Library
- Create Data Layer: This layer is going to be responsible for all the networking services. We're going to use Ktor for networking purposes, all of our android projects use Retrofit for networking but as mentioned above for future KMM implementation we're using Ktor and also Ktor is a new Kotlin based top notch networking library. So this layer is going to consist of entities for API request body and API services that are going to use these entities and Ktor HTTP client to make various queries to APIs to fulfill the wallet requirements.
- Create Domain Layer: This layer will take care of the interactions between data layer and the UI layer. This layer will contain the models and use cases, the model will be helpful for creating the data objects from the data they are going to take from entities and use cases are the interactors that will use these models to provide data to UI layer and give updates back to data layer.
- Write Tests for Core Library: To complete the initial development of any framework or library tests are important and also there is no UI to test the core library, so writing tests for the core Library is important.
2. Reference Application
- Create Presenters/ViewModels: The Presenters/ViewModels are those components of UI layer that interacts with the use cases for fetching and updating data, till now it is not decide that which pattern we're going to use, Presenters or ViewModels, because Presenters more flexible in terms of sharing code between Android and IOS modules but ViewModels are more advanced patterns for Android due to thier ability to store and manage UI related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations. All the UI side calculation and view handling processes takes place here.
- Create UI: The second task is to create a functional UI for the refence application according to the UI designs provided by the organization. The UI will show the implementaion of all the functionalities provided in core library.
- write Tests for Reference Application: The last task for the reference app is to write tests for the Presenters/Viewmodels, activities and fragments, so that we can test the reference app after any update is made and correct any bug found during the tests.
- June 07-14: Create Ktor specific files and start developing the data layer.
- June 15-22: Finish developing any remaining component of data layer and develop the domain layer.
- June 23-Jul 08: Write tests for Core Library.
- Jul 09-11: Document, test and fix bugs for the work completed till now.
- Jul 12-Aug 02: Create the UI and all related Presenters/ViewModels for the reference app.
- Aug 03-10: Write tests for the reference app.
- Aug 11-16: Add any remaining feature, test and fix bugs, if any.
- Aug 17-23: Document all the work done so far and write a Blog about my GSoC Journey.