GSoC'2021 @ The Mifos Initiative | Fineract-cn-mobile
This gist contains the details about My GSoC '21 Project with The Mifos Initiative and the things I am planning to accomplish during the 10 weeks of GSoC. During GSoC, I will be working on making some functional enhancements to the Fineract-cn-mobile. This year the project was selected under the umbrella organization The Apache Software Foundation as Mifos organization was not selected for GSoC'21.
About the Project
The Fineract-cn-mobile application is the Android client of Apache Fineract CN, built on top of the FIneract CN Platform. It provides banking solutions for people around the world who are unbacked. This app is for field officers who go to their customers and provide them with financial services.
What has been completed?
In the previous versions of App, the support for adding functionalities to create Ledger was implemented, Kotlin support was extended in the app partially, the Couchbase database was integrated into the app to implement offline mode in the app for groups and customer-related functionalities and the UI was improved for Groups and other related functionalities were added.
Goals of the Project
Integrate the Payment Hub to enable the disbursement making use of Mobile Money API
Payment Hub is the component, which connects DFSPs to switches. The Payment Hub communicates with the Fineract versions via REST API. In the fineract-cn-mobile, field officers should be able to disburse the loan for the customers. The GSMA Mobile Money API is an initiative that provides an easy and secure API for mobile money transactions and management. The API has been structured and configured based on the RESTful Principles.
I am looking forward to integrating the mobile Money API to enable the feature of disbursing loans from the app itself, by the field officers.
Improve Task Management features into the app
Many tasks are needed to be taken care of in a Banking Institution like the approval of Field Officers is required before the disbursement of Loan. There might also be a need to modify some details or update the status of a process. For eg: There might be a need to update the status of the Loan Account from ‘Verification Pending’ to ‘Loan Approved’ or ‘Declined’
Create UI for Creating a new Account and displaying Account details
Whenever a Field officer would disburse a Loan or approve a Loan to a Customer, an option to create a Loan account should be present, but at present, there is just mock Data present in the Account Screen and option to create a new Loan account or any account is not present.
Also, nothing happens on tapping the Account card. I will implement the feature to create a new Loan Account and to display Account details in the new screen that will launch upon clicking the Account Card.
Create UI for the creation of Tellers and displaying details of Tellers
A teller services indoor and drive-through windows and helps customers with transactions. Bank Tellers assist customers by answering questions, processing transactions, and assisting them with other bank business and therefore, are a vital part of Banking service. Right now, in the App, we don’t have an option to create new Tellers or edit or display the Teller Details. I will be Creating The XML files and data models for the UI and also the proper implementation adhering to the practices and architectures used in the Project.
Improve GIS features like location tracking, dropping of a pin into the app
On a daily basis, field officers have to navigate to the customers/clients for repayment or collection/verification of documents. Some GIS features like adding a pin to the customer location, show nearby customers, navigate to a customer, Path tracking has already been implemented by Ahmad in GSoC 2020, as stated here. So, before I work on other functionalities, this PR needs to be merged first.
● Showing the real-time distance from the destination and also retrieving the travel time information by overriding the onPolylineClick() method and showing it to the user. This would be a nice feature for the app to support and very beneficial for the field officials.
● I will be using Polylines to display the routes while navigating if there are some problems in the already implemented code upon discussion with the mentor.
● I am also thinking of making use of Polygons to show the area where officials' all customers and clients reside.
Improve offline mode via Couchbase support
Couchbase Mobile is the complete NoSQL database solution for all data storage, access, sync and security across the entire application stack. It includes an Embedded database, Rest API and Synchronization. After the implementation of this feature, the field officers will be able to use the application and work with data no matter if internet connectivity is present or not. Any application is linked to the backend for dynamic data loading but some caching to local storage is required to keep the app usable even when there is no internet connection.
Broadly, Couchbase comprises three major components, namely Couchbase Lite(which is a NoSQL JSON database for mobile apps), Couchbase server(highly scalable and distributed NoSQL database platform) and SyncGateway(which will be used as a synchronization mechanism. While there is no Internet connection, It will cache the modified data in the local storage and sync the data whenever an Internet connection is available ).Customer and Groups-related functionalities have already been implemented as stated here. I will work on Integrating the offline support for other functionalities of the Application.
Write Unit tests, Integration tests and UI tests
Clean architecture always invites testing and so we should work on writing Unit integration tests. I will be writing the Integration tests as well as some UI tests using libraries available on the Internet.
Extend Kotlin support in App
I will try to convert the remaining code written in Java to kotlin and extend the Kotlin support in the application. I will also convert java models to kotlin if there are some remaining.
Phase 1 Coding:
- June 07-14: Creating UI for creating Tellers and Teller details screen.
- June 15-22: Improve Task management features in the App.
- June 23 - Jul 08: Improve GIS features in the app and integrate new functionalities. Write Blogs and document the work done so far.
- Jul 09-11: Document, test and fix bugs for the work completed till now.
Phase 2 Coding:
- Jul 12-27: Improve offline mode via Couchbase support.
- Jul 28-Aug 02: Creating UI for creating new Account and Account details screen.
- Aug 03-18: Integrate with Payment Hub to enable disbursement via Mobile Money API.
- Aug 19-21: Document all the work done so far, test and fix bugs,if any.
- Aug 22-23: Write a Blog about my GSoC Journey and the work done till now and what is to be done after.