Name: Shashank Priyadarshi
Organisation: The Mifos Initiative
Project Name: Android Field Operations App Version 7
Mentor: Abhilash Gunasegaran and Tarun Mudgal
Project GitHub repository link: master branch
Commits made during GSoC: Pull Requests
- Overview of project
- Project Implementations
- Future Improvements
- GSoC expierence with The Mifos Initiative
Android Field operation application based on Mifos X is a robust core banking platform that is developed for field officers using which they process transactions, keep track of their client’s data, center records, group details, different types of accounts (loan, savings and recurring) of the client, run reports of clients, etc. Its sole purpose is to make field operations easier and effortless. This application also provides an offline feature that allows officers to connect with clients and provide them financial support in remote areas as well.
During this GSoC, I will work on extending support of Kotlin in the app, improving offline availability, extending testing coverage, integrating with external systems via Payment Hub EE, tighter integration with our notifications framework, improved client data collection via forms, and enhanced GIS tracking features.
1. Added Bottom Navigation and Floating Action Button(FAB) in Dashboard PR link
For increasing user experience, using bottom navigation will be more preferred over side navigation to reach the top-level destinations. Also, the tab bar fairly easily communicates the current location in the app and properly uses visual cues (icons, labels, and colors) to enable the user to understand their current location at a glance. So, it will contain 4 frequent destinations i.e. dashboard, client, center, and group lists.
FAB is a good way to prioritize the most important actions the user should take. Here in our app, it will provide quick access to create a new client, center, and group on just one click.
2. Language support through Locale PR link
Added the multi-language support in the application which will allow the user to access the application in various languages like Spanish, Hindi, English, Chinese, French, etc. Localization support is very useful for increasing user engagement in the app.
3. UI enhancement PR link
An excellent User Interface will create an instant attraction to the app while a superb User Experience will put a lasting impact on the users’ minds. The basic UI of this application can be modified by providing thecorrect padding, color formatting, proper alignment (of buttons, spinner, text view, edit view, etc), optimizing some predefined UI, elimination of unnecessary functionalities, enhancing toast notifications, etc.
Login Page |
Dashboard Page |
Client Details |
Individual Col. sheet |
4. Instant Search feature in search fragment PR link
It will allow the user to get the search results at the instant he types the client's name.
5. Dark Mode support PR link
Dark Mode design reduces the light emitted by device screens while maintaining the minimum color contrast ratios required for readability. It saves energy, mainly if the device uses an OLED or AMOLED screen. With the majority of the screen dark, the screen glare will be reduced. While the dark text on a white background is the best in terms of readability, Dark Mode (which has light text on a dark background) is better for reducing eye strain in low light conditions.
Dashboard Page |
Checker Inbox |
Settings |
6. Notifications support PR link- path tracker and offline mode
From 8.0 and above a new concept of Notification Channels came into action for notifications framework. Notification Channels provide us with the ability to group the notifications that our application sends into manageable groups. The notification feature can be used to further enhance the UX, for example if the user is offline and they create new clients, groups or centers, they shall receive a notification when they are back online after the offline sync is done.
Path tracking |
Offline mode |
7. Change Passcode feature PR link
It will allow the user to change or reset the passcode without logging in again. As previously if the user had set he passcode once so he needs to log in once again to change it which will decrease the UX and also make the login workflow long.
8. About App feature PR link
This section was previously missing in the application. It allows to user to know more about the application and it also contains a few links related to the contributors, GitHub, license, and their Twitter account.
9. Identifier status type PR link
As client identifiers are classified into two types: "Active" and "Inactive", but previously these details are not visible on the identifier list which made two same identifiers with different status type difficult to classify. So I added a new row to show the status as "Active or Inactive" in the identifier details section.
10. KYC/client onboarding feature PR link
KYC-Know Your Customer is a process by which financial institutions obtain information about the identity and address of the customers. This process helps to ensure that the services of the financial institutions are not misused. The KYC procedure is to be completed by the institutions while opening accounts and also it should be periodically updated. So now it contains a three-level KYC system to store the information based on the levels.
11. Extending support of Kotlin:
Migrated the prexisiting Java code to Kotlin and also tested the new codes so that this migration doesn't affect the exising functionalities. So why Kotlin? Because Kotlin is a new language that has adapted and corrected mistakes over the time, it generates the same bytecode as what Java does. So Kotlin can seamlessly call Java code and vice-versa. Also, null type is integrated into the language's type system itself. So it is not necessary to keep wrapping codes with null checks around it to avoid NPE. Kotlin is not limited just for android development. Kotlin Native opens possibilities for Kotlin to support almost any platform.
PR links -
- Create new client (#1533)
- Groups related fragment (#1535)
- Surveys related fragments and activities (#1539)
- Centers feature (#1540)
- Savings account-related fragment(#1542)
- Loan Account related fragment(#1543)
- Client signature, data tables, notes, and documents related fragment (#1544)
- Collection and Individual Collection Sheet (#1545)
- Client related fragment (#1550)
- SMS push notifications
As of now Fineract 1.x doesn't support Firebase Cloud Messaging service for sending push notifications( Triggered, Scheduled, and Direct), so this feature can be easily implemented once the FCM integration is done.
- GIS support
There is no proper workflow of GIS that is developed yet, as of now it is used for tracking the path of the client which can be improved. The field officer can easily access the nearby client's location and track the path based on that. And it can also be integrated with a notification framework so that whenever he is near to any client then he will get a notification for that.
I had a great experience throughout this three-month-long program. The community( The Mifos Initiative ) and my mentors ( Abhilash Gunasegaran and Tarun Mudgal) were very supportive in this three-month-long journey. I also want to thanks Ed Cable for his great support. The weekly check-ins were awesome, it provided me a good community bonding chance and also helped me to solve some problems which I faced in between. GSoC helped me a lot to learn and grow in a lot of aspects. I am looking forward to contributing to this organization in the future and would also like to help the new contributors to start their contributions in the community.