2017 Google Summer of Code Wrap-Up

Another year, another great Google Summer of Code program for us here at the Mifos Initiative. This year we worked with our biggest class of interns yet – 12 Mifos Initiative interns and 3 Apache Fineract interns who worked tirelessly on their projects and produced amazing results. This post will showcase the outstanding work they did with the community and part 2 of our official GSOC Wrap-up will focus on their reflections on their journey throughout Google Summer of Code.

While the majority of our projects centered on Generation 2 of Mifos which will only in production for the next couple of years, the approaches, designs, and requirements we’ve worked on for each project can be carried over to Generation 3 of Mifos (Apache Fineract CN) so we can rapidly build out these same apps and features on the new microservices architecture.

Thank Yous!

Before we take a closer look at the results of the summer, we want to first off thank everyone who made Google Summer of Code another successful year.

Google Open Source Programs Office

First off we want to once again thank the Google Open Source Programs office for giving us the opportunity once again to introduce students to open source and as they help us fight poverty with technology-enabled financial inclusion. It was a pleasure meeting up with Cat, Stephanie, Mary, Josh and Helen at OSCON as well as at the GCI grand prize trip earlier this year. The entire team is always so responsive and do such an awesome job coordinating so many moving pieces to make GSOC a success. We look forward to participating in GCI and GSOC for many years to come!

Mentors

A big shout and thank you goes out to our mentors who are the key to the success of Google Summer of Code. Our mentors are the ones down in the trenches working with the students making sure they can get through any challenges they overcome. Our mentors are a guiding light to our interns as they help pass the torch onto a new generation of Mifos and Apache Fineract contributors. Thank you to our mobile development mentors – Puneet Kohli and Ishan Khanna. Thank you to our web development mentors – Gaurav Saini, Maulik Soneji, Pranjal Goswami, and Vinay Saini. Thanks to our mentors on the platform side – Avik Ganguly, Kyriakos Patsias, Nazeer Shaik, Marky Reynolds, Aleksandar Vidakovic, Dhirendra Pratap, Ayuk Etta, Antony Omeri, and Markus Geiss. A big thank you to other community members and volunteers like Rajan, Santosh, Denila, James, Sundari, Nayan, and others who made big contributions despite not being official mentors.

Our Interns

Last, but certainly not least, thank you to our interns from across the globe who poured their energy into their projects. What is always most rewarding is seeing how collaborative and supportive the interns are of each other helping to solve coding problems, helping with collaboration tools and just being great all-around community members. We wish them the best of luck in whatever they pursue next and look forward to their continued contributions to the Mifos Initiative. Already, despite the program being officially over, many of our interns have continued making contributions and wrapping up loose ends of their projects. 

Mobile Apps

Thanks to the talented and tireless efforts of our Google Summer of Code students, we now have an impressive suite of world-class mobile banking and mobile wallet apps for clients and mobile field operations apps for staff across both generations of Mifos. These are great finished products that can be run out of the box and in production by any user but they’re also great “starting dough” for any partner looking to see what can be built on top of Mifos X and wanting a reliable open source foundation to start from.

Mobile Banking App

Dilpreet, working under the official mentorship of Puneet and the unofficial guidance of Rajan Maurya, has transformed our self-service app 1.0 into a beautiful and powerful mobile banking app. A special thank you to Raunak Sett for volunteering his design skills to provide the beautiful UI that Dilpreet implemented and materialized. Dilpreet worked on a vast list of features including the redesign of the app, a new dashboard screen, improved searching and sort, inclusion of a help section, support for third party transfers, support for signing up new clients, support for adding beneficiaries, user passcode feature, and more. You can view a full run-down of everything Dilpreet accomplished in his GSOC Report and learn more about his journey in his blog.

The final production release will be available from Google Play once we complete QA but if you’d like, you can view this screencast or to test out the latest build, check out this beta APK

 

 

 

Mobile Wallet Framework and Two Apps – Consumer and Merchant Wallet

Naman had a bold undertaking for his GSOC project to architect a modular and extensible mobile wallet framework based on on clean architecture principles. Despite fluidity and sometime a lack of clarity in requirements, Naman managed to build out this mobile wallet framework architecture and not one, but two apps on top of it. Both of these apps use Apache Fineract as the back-end and leverage the same underlying components of the framework that were shared across both use cases. The first app that he built was a merchant mobile wallet solution called Pixie Collect based on requirements of RBL Bank to allow merchants and small businesses to easily accept all types of digital payments without any barriers. The second app is a generic consumer mobile wallet which provides some of the basic mobile wallet functionality as outline by the Gates Foundation in their mobile wallet spec for the Level One Project.

For an overview of Naman’s work view his final report browse his mobile wallet code repo, view screencasts for Mifos Pay and Pixie Collect, or download the alpha APKs for Pixie Collect and Mifos Pay.

 

 

 

Mifos X Mobile Field Operations App 4.0 on Mifos X

Tarun Mudgal and Mayank Jindal worked under the official mentorship of Ishan Khanna and Puneet Kohli and the unofficial mentorship of Rajan once again. They both worked on building out a number of major enhancements that had long been requested by our customer base.

Tarun Mudgal

Tarun worked on a number of features including implementation of the bulk collection sheet user interface on mobile devices, signature, bulk JLG loan applications, and more.  View Tarun’s Final Report for a summary and screenshots of all his changes or this screencast for a demo.

 

 

 

 

Mayank Jindal

Mayank worked on a number of features including the support for authentication via a passcode and the complex encryption that was required to ensure this was stored securely, extended offline support for details of centers and surveys and syncing at the center level, offline search, support for shares, and more than a dozen bug fixes. View Mayank’s final report for a summary and screenshots of all these changes.

 

 

 

 

 

Apache Fineract CN Mobile Field Operations App

Rajan, while not graciously volunteering his time to mentor Mifos Initiative GSOC students, was deeply focused on his project as an Apache Fineract intern, under the mentorship of Markus Geiss. Rajan was one of the first contributors outside of Kuelap to begin building on top of Mifos Generation 3 aka Apache Fineract CN. Given his deep experience in revamping, re-architecting, and maintaining the mobile field officer app on top of Mifos X/Apache Fineract 1.0, he was well-suited to build the first mobile app on Apache Fineract CN. He architected this mobile field operations app from scratch and designed and built it according to use cases from the Caribbean and Latin America.

 

Web Apps

On the web app front, we focused our interns on improving the newly reskinned web app, wrapping up and extending projects from the 2016 GSOC, and building out a complete online banking app powered by Apache Fineract and its self-service APIs.

Online Banking App

Taking our self-service APIs and our use cases for the Android Mobile Banking App, Raunak Sett, under the leadership of Gaurav and Vinay, has architected, designed, and implemented a complete online banking application. Apart from implementing the use cases supported in the mobile banking app including viewing of clients, transactions, support for savings transfers, and repayments of loans, Raunak also implemented the following brand new features including self-creation and registration of users for the online banking app, viewing of reports, the creation and storage of a four-digit pin, a revamped help section, new loan applications, and more. When Rauank wasn’t working on his project, he was designing some beautiful UI screens for both our mobile banking and mobile field operations app.

View a summary of Raunak’s work in his final report and test out the online banking app at with credentials of selfservice/password.

 

 

Mifos X Web App Usability Enhancements

Gopala Krishnan, under the mentorship of Pranjal and Maulik, set out to improve the usability of our Mifos X web app which finally had it’s new skin shipped recently. He started by doing a survey and calls to discuss with actual users how UX could be be improved. While he wasn’t able to get many responses, we still look forward to gathering feedback and implementing. The list of enhancements to the Mifos X web app is quite numerous but includes designing and implementing wizard interfaces for the product and account creation, redesigning account, group, and center summary pages, designing and implementing a workflow UI for entity checks for data table, numerous bugs fixes, and more. Gopala is now working with Mike Okeleke to incorporate the UX improvements Mike had make to the collection sheet several years ago. To see all of the beautiful UI improvements Gopala made, watch this screencast or view his final report. 

 

Offline Browser Access

Mohit Bajoria, continued the work he started last summer, by diving deeper into his project to enable offline access for Mifos X in the Chrome browser. Before and throughout GSOC, Mohit, played a critical role in getting the Mifos X web app redesign complete and shipped. This was critical to enable our web interns to contribute and work on one version of the codebase so there wasn’t complex merges as was the case last year. With the offline module built into the Mifos X web app, users can now perform the following operations while offline and synchronize data when a connectivity returns.

View Mohit’s final report to learn more.

 

 

Notifications Framework

Courage Angeh, under the leadership of Pranjal, worked on extending Adhyan’s great work from last year to add a topics-subscriber model to the architecture of the notification generation. This allows groups of subscribers to subscribe to topics and then generate notifications which get sent to these user groups that have subscribed to topics. Previously notifications could only be sent to one user at a time. Now that this new architecture is in place, the notifications framework is being merged into Apache Fineract, and is also being integrated with our mobile and online banking apps such that both staff and clients can receive in-app notifications. View Courage’s final report and this screencast to see her work. 

 

Apache Fineract

Several of our Mifos Initiative interns along with two of our Apache interns worked on projects directly on top of the back-end platform or related to ancillary modules integrating with the core. Security in the platform and Mifos X distribution have now been greatly improved with the addition of two-factor authentication and the integration of static analysis tools. Our data import tool, a critical tool for onboarding new institutions, is now integrated into the UI of the platform, performs much better for large-scale migrations, and supports a broader range of data to be imported. Great progress has also been made on two vital modules – integration with credit bureaus and a generic gateway to integrate with mobile money APIs. Lastly, we now have live API documentation via the Swagger OpenAPI format.

Two-Factor Authentication

Alex Ivanov, one of our former GCI grand prize winners, returned to the Mifos community for GSOC and under the mentorship of Avik implemented Two-Factor Authentication support across the Mifos X web app and mobile field operations app (android client) to authenticate into Apache Fineract. 2FA can be configured on or off across the organization with support for generating a one-time password that can be sent via email or SMS. Remember me tokens can be stored so users can stay logged into their devices without having to enter a second factor for extended periods of time. Alex has implemented two-factor authentication with flexibility in mind so OTPs can be time-based, additional factors of authentication can be supported, and more. Check out Alex’ final report for a full overview of his project and this screencast to learn more.

 

Data import Tool Enhancements

The Data Import tool is one of the most critical components of the Mifos X/Apache Fineract stack and is used for data migrations large and small across our community. Given its criticality,  it was imperative to more smoothly integrate this into the platform and the UI. That integration was just one of the many items that Kumaranath worked on including refactoring the data import tool so that imports could happen at a staff or branch level. This was vital for large users who got bogged down when attempting to generate the excel templates for uploading large sources of data. Kumaranath also extended the data import tool to support a number of the other functionalities, products and services in Mifos X. Kumaranath worked under the leadership of Kyriakos along with Avik. View Kumaranath’s final report or this screencast to learn more.

Swagger API live documentation

Sanyam Goel, as one of our Apache Fineract interns, took on a very complex project under the leadership of Aleksandar and Dhirendra. Following the Swagger OpenAPI format, now API documentation can be generated and updated automatically rather than have to be maintained manually. Documentation is cleaner, more secure, and in a format familiar to all developers. Click here for a preview of the live documentation versus the manually maintained documentation.  Sanyam had to overcome some major challenges with how Apache Fineract APIs used serialized JSON objects as string parameters to pass complex objects. It required a thorough analysis to identify a solution that with minimal impact on the current code but Sanyam was able to achieve and implement that. Now more than 70% of the entire project is covered and the remaining work is just copy and paste. View a summary of Sanyam’s work in his final report, screencast, and documentation for developers.

Credit Bureau Integration Module

Under the umbrella of Apache Fineract, Nikhil Pawar, took up work once again on the development of the credit bureau integration module with Nazeer as his mentor. Nikhil made great progress on the project completing the back-end and front-end work for the family members and credit bureau configuration module. He ran into some issues getting access to a sandbox of a live credit bureau for integration so the completion of integration with Equifax India is still in progress and integrations with other countries are still pending. Nikhil was very nimble in his project by taking on the implementation of Group Loans with Individual Monitoring and Group Savings with Individual Monitoring when he couldn’t proceed further on credit bureau integration. Watch his screencast or view Nikhil’s final report.

 

 

Mobile Money Gateway

Vladimir Fomene, under the leadership of Ayuk Etta and Antony Omeri, continued the work of Daniel Carlson in building out our mobile money gateway. Facing a complex project requiring back-end architectural work and the design of a new data model along with juggling multiple use cases for integration with mobile money APIs from various countries, Vladimir made good progress but his work is still not complete. Our ultimate goal is to provide the mobile money gateway as a generic bridge to allow the integration of Apache Fineract with any mobile money API so that mobile money transactions can be reflected in Mifos X in real time and transactions can be initiated via Mifos X and executed via mobile money. The architecture for the gateway is in place and a proof of concept integration with the Beyonic mobile money APIs for disbursement and repayments in real-time has been completed. Check out Vladimir’s final report  and watch his screencast to see what he’s implemented and how you can help continue extending his work.

Static Analysis of Apache Fineract

With Mark Reynolds as his mentor, Thisura Philips led this project to make the Apache Fineract code base compliant with industry security standards by taking the entire codebase through a proper static analysis using tools like Sonarqube and TOIF.  Thisura analyzed the entire codebase using these tools, identified all vulnerabilities, and provided fixes and documentation for each found vulnerability. Thisura has also integrated tools these tools into our integration tests and will create a threat model and security guidelines for the community moving forward. View Thisura’s original project goals and final report to learn more about this critical analysis he did for our community.