Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Final Work Product Submission for Google Summer of Code 2019 at The Mifos Initiative

Google Summer of Code 2019 Final Report

Moksh Mahajan | GitHub | Email | LinkedIn

gsoc-mifos another copy

Organisation: The Mifos Initiative

Project Name: Android Field Operations App Version 6

Mentor: Tarun Mudgal, Ishan Khanna

Project github repository link: master branch

Commits made during GSoC: Pull Requests

Overview of Project:

  • Android Field Operations App (a.k.a Android Client) helps bank staff field officer to keep track of Clients, Centers, Groups, Loan Accounts, Saving Accounts etc.

During this GSoC period, I worked on adding some more Client details, adding Checker Inbox feature, support for Fingerprint Authentication, some refractors like Migrating project to AndroidX and adding support for Kotlin and some UI bugs fixes.

Project Implementations

1. Added Mobile No. field in Client Details Screen PR link (Opened)

  • A very simple feature that enables to access a Client's mobile no. (if it's available on the server) when the user navigates to Client Details Screen (Open Navigation Drawer -> Clients -> Choose a Client).

Mobile No

2. Feature to show Group Names in Client Details Screen PR link (Opened)

  • Similar to the above feature, a field officer can now see the Group names a client belongs to by navigating to the Clients Details Screen.

Group names

3. Feature to add Client's image through Camera or Storage while creating one PR link(Opened)

  • Previously in the app the only way to add a Client's image was to: Navigate to Client List screen -> Choose a Client -> Click on the placeholder image and choose Take a Photo. (There is no option to upload a photo from the Gallery(storage))

  • Now the user also has the option to add a Client's image through Camera or Gallery while creating a new Client. Navigate to Client List Screen -> Tap on Plus Floating Action Button -> Click on the placeholder image

Upload Clients photo

  • The way I've implemented this feature is a temporary work around rather a foolproof implementation. This is because presently in order to upload a client's image to the server Client's Id is required. So, I am making two separate network requests: First is to Create the Client, which return the Client's Id as response if everything goes right and Second to upload the Client's image using that id received as a response to the first request.

Cases when this approach won't work:

  1. In case of flaky connections when first request is processed successfuly and second request fails.
  2. In case the Checker Inbox feature is enabled because, in that case Client Id won't be given out as response.

4. Migrated the project to AndroidX PR link (Merged)

  • AndroidX is a major improvement to the original Android Support Library. This link is really helpful if you want to know why bother about Migrating your project to AndroidX. In case you're wondering why I have updated the SDK version to 28, then I would like to tell you that it was necessary before the upgrade.

  • One more reason for this upgrade was since the passcode library had been already ported to AndroidX, so in order to use that our project should also use AndroidX libraries instead of Support Liraries. So, in order to be able to use the latest Passcode library version (with the Fingerprint Authentication), this upgrade was necessary.

5. Configured project to add Support for Kotlin PR link (Opened)

6. Added Checker Inbox feature PR link (Opened)

  • Implemented in Kotlin and based on Android Jetpack practices.
  • The user can see the list of Checker Tasks
  • The user can perform operations on the tasks which are Approve, Reject and Delete

Task Operations

  • The user can filter the tasks based on the "Maker"

search by user

  • The user also has an option for badge processing of tasks which allows selecting multiple tasks and perform an operation on them.

Batch Mode

  • There is also a search filter option that would allow to filter tasks according to these fields: Entity, Action and Resource ID. Also you can filter tasks by entering the start and end date. Some API end points for the search filter were not working properly so, I wrote the logic to filter the tasks in the app code itself.

Search filter

7. Added Support for Fingerprint Authentication in Passcode Library PR link (Opened)

  • Added support for Fingerprint Authentication that would help to get rid of almost all boiler-plate code for implementing the Fingerprint Authentication feature in an app. It can be used by different Mifos projects that are based on Android. For more details this PR can be viewed.

enable_fp_auth

fp_auth_dialog

8. Some misc bug fixes and UI enhancements

My GSoC Experience with Mifos Initiative

  • I had an amazing experience of working with The Mifos Initiative. Again I would like to thanks Ed Cable, Ishan Khanna and Tarun Mudgal for giving me this opportunity. The people in the organization are very friendly, helping and understanding. One of the best things is the weekly meeting where we interns gave the report of our work and blockers we are facing so, that actions can be taken to remove those blockers for us. Honestly speaking GSoC with The Mifos Inititiave helped me to learn a lot and at a very fast pace. I am really looking forward to contribute to this awesome organisation in the near future and would be more than happy to help any new developers who would like to contribute and be the part of The Mifos Initiative :)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.