Google Summer of Code 2017 Ideas

Google Summer of Code 2017 Ideas

Mifos Initiative has been Accepted as a Mentoring Organization!

The Mifos Initiative has been accepted as a mentoring organization for the 2017 Google Summer of Code. Subscribe to this page for the latest updates to project ideas and mentors assigned to projects. Prospective students should begin engaging with the community and working on pull requests.

Get Stoked - End Poverty. One Line of Code at a Time.





2017 Google Summer of Code - Get to Know Mifos

We're looking forward to participating in Google Summer of Code for our fifth year. In 2016, we successfully graduated six stellar interns from across the world who are continuing to make substantial contributions to our community. We hope to continue building our next generation of contributors who are joining in our movement to fight poverty through open source software. We want you to be part of our mission of creating a world of 3 Billion Maries.  

Students in 2017 will have the option to work on a variety of projects related to our front-end Web App built on top of the AngularJS framework, and a variety of other apps including our Android-based field officer app and client banking app, and modules like our data import tool. 

2017 GSOC Mentors

We have a talented and passionate group of mentors from across our global community who are eager to help guide the next generation of HFOSS contributors. These mentors come from various backgrounds - partners deploying Mifos, financial institutions using Mifos, volunteers, and even former GSOC students but they all share a common goal of ending poverty one line of code at a time!

Mentor

Project

Location

Time Zone

Mentor

Project

Location

Time Zone



India

IST (GMT +5:30)



India

IST (GMT +5:30)



Cameroon

WAT (GMT +1:00)



India

IST (GMT +5:30)



India

IST (GMT +5:30)



USA

CST (GMT -6:00)



India

IST (GMT +5:30)



USA

CST (GMT -6:00)

Puneet Kohli



India

IST (GMT +5:30)



India

IST (GMT +5:30)

Tentative

India

IST (GMT +5:30)



USA

EST (GMT -5:00)



Portugal

WET (GMT)



Kenya

EAT (GMT +3:00)



India

IST (GMT +5:30)



India

IST (GMT +5:30)



India

IST (GMT +5:30)

Guidelines

  • Getting started Read about setting up the code and understand the basic concepts around MifosX.

Expectations

Students working on Mifos X will be expected to:

Prerequisite Skills

Basics

  • Quick learner

  • Troubleshooting Wizard

  • Passion for writing beautiful code

  • Excellent communication skills

  • Knowledge of developer tools

    • such as: a text editor, source control, how to build software

    • experience with specific tools will also help, such as: Eclipse IDE, Git

Mifos includes wide variety of technologies, we do not expect a student to be expert on all of these. But it will be helpful if you have some experience in some of these. Helpful skills (specific technology requirements vary with project chosen):

  • MySQL,Jersey, Hibernate, Spring,

  • HTML, CSS,  JavaScript (JQuery), AngularJS, Java, Android

  • JUnit, REST-assured

Hints

Project Ideas

All 2017 projects will be related to the Community App, our Android apps, or any additional tools or modules. These apps and modules are built on top of the Apache Fineract platform, the world's only open platform for financial inclusion and is banking delivered as a service via the cloud. Apache Fineract is a true platform in which the back-end is cleanly separated from the front-end and all core platform services are exposed through an API making it easy develop new applications on top of the Apache Fineract platform. 

REST API "live" documentation (Swagger, SpringFox)

Mentors

@Aleksandar Vidakovic

Overview & Objectives

Mifos (Fineract) of course has a documented REST API already. It currently has two limitations:

  1. It's source is simply a HTML file that is maintained manually in parallel to the source code which actually defines the REST API, and therefore can be out of sync

  2. It's not "live", that is one currently has set up a REST tool such as e.g. Postman & Co. to "explore" it; contrary to the approach you can see e.g. on the Swagger Petstore example and (increasingly) other sites offering REST APIs.

The goal of this project is address this by using Swagger (now Open API Initiative OAI), most probably combined with SpringFox in for Mifos (Fineract), and replace the current apiLive.htm.

Phase II: once the Swagger live documentation is working it would be interesting to use the Swagger descriptor to generate client libraries (e. g. Java, Angular2). Nice to have optional add-on ideas for the end of the project: Add a paragraph to this new REST API Doc explaining how to easily import the (latest) Mifos Swagger into Postman, and perhaps add a Run in Postman button?

Someone suggested a potential alternative to using Swagger & SpringFox may be to instead use Spring REST Docs; if you feel that is better suite to fulfill the requirements above, please do feel free to explain this to your mentor and pursue in that direction.

Description

  • familiarize yourself with Swagger + SpringFox

  • create working v1 code demonstrating feasibility of approach

  • propose it to the community (mailing list), and react to feedback

  • don't loose any documentation that's already on the current (manual) REST API doc, maintain it's human readable comments (by moving that into JavaDoc/annotations in code which SpringFox/Swagger exploit), the "sections", etc.

Helpful Skills

Java, Spring Framework, REST, Git, Gradle

Impact

Easier to consume Mifos REST API for front-end/mobile etc. developers.

Other Resources

see external links inline above

JIRA Task

AngularJS Web App Enhancements

Mentors

@Gaurav Saini, @Pranjal Goswami, @Maulik Soneji

Overview & Objectives

Our AngularJS Web App is the standard application on the Mifos X distribution that provides all the core functionality for the most common methods of financial inclusion and products and services. It's also the starting point for any partners looking to customize or extend the UI. It's constantly being improved based on user feedback, better performance, and to integrate new design standards.

Description

In 2016, our Google Summer of Code intern refactor, re-designed, and re-skinned the Web App. This project would continue by making additional UI enhancements including:

  • Redesign the client, group, and center records

  • Redesign the loan and summary savings pages

  • Implement Wizard UI product and account creation

  • Implement UI for workflows & data table entity checks

  • Improve the collection sheet UI

  • Extend the notifications framework

  • Improve interface for role-based dashboards.



Helpful Skills

Javascript, CSS, HTML5. AngularJS and Bootstrap (CSS framework) is plus

Impact

Enhanced User Experience, Intuitive application design

Other Resources

Usability and Design

Browser-Based Offline Access

Mentors

@Gaurav Saini, @Pranjal Goswami, @Maulik Soneji

Overview & Objectives

For this project, we require an intern who is qualified and willing to work core HTML5 offline functionality. If we able to add offline support in community-app then we can have same application working on all browsers with offline support and need of a desktop app will not be needed.

Description

The project will involve the following. It will be a continuation of the 2016 Google Summer of Code project worked on by Mohit.

  • We can use IndexDB for storing data offline and once connected synchronize it, store actions that happened in same sequence and then fire against server.

  • We can store some data in JSONs as key-value pair and offer pre-sychronize which will fetch data as JSON for creating clients and other actions in offline mode.

  • Currently, HTML templates load from server everytime we refresh our application. As, discussed we should have some sort of template caching with expiry headers.

  • We can make some template made available offline using application cache.

  • With Template cache which is angular component. It looks for template in cache if not in the cache, it will load from server and then put in cache.

  • Mimic synchronization back and forth mimic how you store, how you date it out.

Helpful Skills

Javascript, CSS, HTML5. HTML5 Offline support knowledge i.e - Service workers, Sw-toolbox, IndexedDB wrappper - Dexie.js

Impact

Offline Functionality to Community App

Other Resources

Detailed Information

Android Field Operations App Version 4

Mentors

@Ishan Khanna

Overview & Objectives

We have released several versions of our Android app for field officers to go out in the field to process transactions, create clients, etc. Most recently in 2016, our Google Summer of Code intern refactored the entire application, implemented offline synchronization for clients and groups, and added improved functionalities for client onboarding, loan and savings collection, and GIS-based location tracking. All this work comprised Version 3.0 of the Android App

This project would continue that work and transform it into Version 4 - by extending offline synchronization and adding additional functionalities.



Extend our existing Android Field Operations App from Version 3 to Version 4 with

  • Implement collection sheet interface for bulk collection of savings, loan, and tracking of attendance

  • Extending offline support throughout additional areas of the application

  • Redesigning some of the navigation and workflows

  • Integrating the notifications framework

  • Integrating SMS communications

  • Enabling views for task list and reports

  • Improving the user interface for capture of surveys.

  • Improving data scoping and role-based permissioning

  • Unit and Integration Testing

This would all be on top of the corresponding APIs on the Mifos platform.

Helpful Skills

Android development, SQL, Java, Javascript, Git

Impact

Allows staff to go directly into the field to connect to the client. Reduces cost of operations by enabling organizations to go paperless and be more efficient.

Other Resources

https://github.com/openMF/android-client

Architecture overview: 

https://github.com/openMF/android-client/wiki/Project-architecture-overview

Code style conventions guide:

https://github.com/openMF/android-client/wiki/Code-style-conventions

 Self-Service - Android App Version 2.0 

Mentors

Satya Naryan, Ishan Khanna

Overview & Objectives

We have recently released a full set of client-facing APIs to enable self-service channels for clients to interact with their own data and transact in a self-service manner. Previously all Mifos operations were performed by back office staff. Now clients can authenticate themselves, view and edit their account details. and make repayments or transactions between their own accounts.

It is now possible for them to have direct banking apps that they can utilize including smartphone-based mobile banking, USSD-based mobile banking, and online banking via a web app.

Description

The initial application was developed by 2016 GSOC intern and then taken beyond its initial stages by Rajan Maurya. Detailed user stories and wireframes outlining implementing the following functionalities have been documented. Work will involve both development of the Android application as well as work on the back-end to extend the existing self-service RESTful APIs.

  •  

    • User Sign Up

    • User Details Feature 

    • Update User Details

    • Loan Make Payment

    • Savings Transactions Enhancement 

    • Charges (client, savings, loan) [This feature should be generic type, Student need to enhance the current feature and write a logic, so we will pass the only parameter in constructor that will work for all client, savings, loan]

    • Beneficiary for Third Party Transfer

    • Third Party Account Transfers

    • Update Loan Application

    • Withdraw Loan Application.

    • Unit and Integration test

    • Mobile wallet integration (API and mockups will be provided after student selection So please make your time line accordingly)

    • We want a student who can enhance the Material UI of current app and coming features too.

Integrate with the corresponding APIs on the Mifos platform.

Helpful Skills

Android development, SQL, Java, Javascript, Git, Spring, OpenJPA, Rest,

Impact

Allows a member/client in having a self-service channel allowing them more direct control and visibility into their financial livelihood.

Other Resources

User Stories - https://goo.gl/3xuUko

Wireframes - https://goo.gl/3xuUko

Customer Self Service APIs - https://cwiki.apache.org/confluence/display/FINERACT/Customer+Self-Service

Source Code: https://github.com/openMF/self-service-app



 Self-Service - Web App Development 

Mentors

@Gaurav Saini, @Maulik Soneji

Overview & Objectives

We have released a full set of client-facing APIs to enable self-service channels for clients to interact with their own data and transact in a self-service manner. Previously all Mifos operations were performed by back office staff. Now clients can authenticate themselves, view and edit their account details. and make repayments or transactions between their own accounts.

It is now possible for them to have direct banking apps that they can utilize including smartphone-based mobile banking, USSD-based mobile banking, and online banking via a web app.

The focus of this project would be building out a clean and simple AngularJS application that can be used as a reference web app for financial institutions to directly deploy and offer to their customers or for our our support partners to customize and enhance to the local needs of their market.

There currently is a proof of concept architecture that can be used as a starting point along with detailed wireframes and user stories.



Description

Develop AngularJS Online Banking Interface:

  • Login

  • View Own Profile and Data Tabs

  • View Own Accounts (deposits and loans)

  • View Own Accounts' Transactions (deposits and loans)

  • Initiate Transfers from own account

  • Make Transfers to other accounts

  • Make Repayment to Loans

  • Fill up Questionnaires

Helpful Skills

AngularJS development, SQL, Java, Javascript, Git

Impact

Allows a member/client in having a self-service channel allowing them more direct control and visibility into their financial livelihood.

Other Resources

Self Service APIs - https://cwiki.apache.org/confluence/display/FINERACT/Customer+Self-Service

Source Code - https://github.com/openMF/web-self-service-app

Complete Details can be found here: Self Service Web Application

Accounting Module Enhancements

Mentors

@NazeerS

Overview & Objectives

Mifos X and the Apache Fineract platform already provide a range of sophisticated financial accounting needs, however for organizations that use it as both their core banking system and accounting system all in one, they continue to need other features. While Mifos X never intends to replace an ERP or accounting package, we do want to continue to add additional functionalities that provide the necessary integration with the portfolio and general accounting functionality to support a financial institution's core operations.

Several features have been requested by users and partners that we've grouped together as one task. Applicants should be familiar with the stack as well as the accounting and financial services domain.

Some of this work will include finalizing and incorporating existing pull requests and contributions that have been made by partners.

Description

These enhancements will all be built into the Apache Fineract platform as part of or enhancements on top of the existing accounting module which provides full configuration of the chart of accounts, support for cash and accrual accounting, automated integration with the portfolio accounts and financial mappings, and single and compound journal entries to the general ledger. New enhancements include:

  • Recurring Journal Entries (see spec below)

  • Bank Reconciliation

  • Fixed Asset Register

  • Improved End of Period Processing

Helpful Skills

HTML, Spring, Hibernate, REST, Java, AngularJS, Javascript, SQL

Impact

Better internal control and financial transparency

Other Resources

Recurring Journal Entries Design 

Fixed Asset Register