In this Gist file, I will share what I learned and completed in Google Summer of Code 2020 with Mifos Organization. One of the best things about the Mifos Organisation is that itβs a diverse community with members from all around the world and all of them have been very supportive and helping. I loved working with Edward Cable, Rajan Maurya, Saksham Handu, Saransh Sharma, and I would like to thank all of them especially my mentor and Edward for their guidance, help, and motivation throughout the program. I learned a lot of things from this program and working with this incredible community has been an amazing experience for me.
GSoC Project:
Fineract-CN-Mobile was my project in GSoC'20, it is an Android app for Digital Financial services, that is 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 financial services.
- Create Ledger
- View details of ledger and sub-ledgers
- Edit ledgers
- Add, edit and delete sub-ledgers
- Delete a Ledger account
π For more details, please view the Pull Request.
Field officers can edit a loan If it has not been approved or canceled otherwise the Edit Menu is invisible.
π For more details, please view the Pull Request
This PR has been created on top of PR68 that has been developed by Mr. Saksham Handu in GSOC'2019, and this PR adds support for following functionalities and improvements which were missing in his PR:
- Edit and Update group details
- Edit or delete group members name
- Edit or delete group leaders name
- Reopen a group if it has been closed
- Activate a group if it is pending
- Close a group account
- UI refactoring in GroupdDetailsFragment, AddGroupMemberFragment, AddGroupLeaderFragment, and ReviewFragment to provide a better UX/UI experience to users based on Material Design guidelines.
- Adds Coroutines Library to call APIs in Background Thread and Handle Errors in a better way which is Google's recommended way.
- Refactored the signature of the creating group method to handle network errors.
π For more details, please view the Pull Request.
Users can select a language and change the passcode.
π For more details, please view the Pull Request.
Add support for loan account-related tasks like approving the loan, close, reject or delete loan accounts
π For more details, please view the Pull Request.
There were more than 15 java classes needed to be converted to Kotlin. I converted all the classes to Kotlin and tested the app to make sure the changes have not broken any code. I did the conversion in two categories Retrofit model classes and Service interfaces. I created two different PR for each:
- Retrofit Model Pull Request.
- Service Classes Pull Request.
There were more than 30 pull requests in the repo, I went through all of them one by one. There were many pull requests that needed changes so I requested changes on them and the contributors had a great response, they implemented nearly all of my requested changes in their pull requests. So right now, most of them are ready to be merged in the base development branch.
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 which is critical for enabling offline-first mobile apps. In this period of GSoC I researched how to implement it, and also I created a mini project to practice it's implementation. Here is the project. I also documented how to download, install, and configure Couchbase Lite, Couchbase Server, and Sync Gateway. Visit this gist file to know more.
The Fineract CN mobile app has been developed with a layer of mockup data. I went through the Fineract CN API documentation, changed the base URL of the app to the new demo instance of the Fineract CN, and tested all functionalities of the App. There were many bugs which were causing the app to crash, I solved them and raised a solution pull request. You can take a look at here.
The APIs for editing, creating, and deleting functionality of Role/Permission have been developed in Fineract CN so I implemented it in Fineract CN Mobile too, actually I have started working on this feature early (before coding period).
π For screenshots and more details, please review the raised pull request.
Implementing GIS (geographic information system) into the app was one of the most interesting and fun tasks I did. It was really great playing and creating amazing functionalities with Google Maps. The following functionalities added into the app:
- Add a pin to the current location of the User.
- Show nearby customers.
- Navigate to the customer and shows the route map.
- Search for places.
- Show previously visited places and click on the map to revisit again.
- Save the user path with an ongoing notification.
π For codes and more details, please review the raised Pull Request.
Integrating the offline-first approach using Couchbase mobile was one of the most challenging tasks in my GSoC journey, I put a lot of time to read and research about this amazing NoSQL database technology, I learned a lot of new concepts. Here is the list of functionalities which implemented to work offline:
- Create a new customer
- View customer details
- Task management feature like activate and lock a customer account
- Show customer lists
- Create a group
- View group details
- Task management feature like activate and close a group
- Show group lists
π’ Couchbase Server:
π Sync Gateway:
π Please read this Jira Ticket to know about how I implemented Couchbase Lite.
π For codes and more details, please review the Pull Request.
Automated UI tests and integration tests play an important rule to produce a robust and quality codes. I implemented UI and integration tests for following screens in the app:
- Group List
- Group Details
- Create a Group
π For codes and more details, please review the Pull Request.
πΆ APIs for adding support for loan account-related tasks were not ready, so I only created the UI parts of it. Here is the link for a Jira Ticket regarding the missing APIs.
πΆ There were no APIs for saving the user's tracked path coordinates after APIs created then we can show previously visited customers list. I implemented this feature using mock data only. Here is the Jira Ticket regarding missing APIs.
πΆ For Couchbase implementation, I only implemented customer and group related functionalities, after merging current PRs and integrating Coucbase and Sync Gateway in the Fineract CN platform, then we can continue integrating remained functionalities.