Google Summer of Code 2016 Ideas

Google Summer of Code 2016 Ideas

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







The Mifos Initiative has been selected as a mentoring org for the 2016 Google Summer of Code. Subscribe to this page for the latest updates to project ideas and mentors assigned to projects.

2016 Google Summer of Code - Get to Know Mifos

We're looking forward to participating in Google Summer of Code for our fifth year. In 2014, we successfully graduated seven 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 2016 will have the option to work on a variety of projects related to our front-end Community App built on top of the AngularJS framework, and a variety of other apps including our Android-based mobile client. 

2016 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!

These are the current mentors for the 2016 program. Please reach out to them if you have any questions. Projects they're leading will be finalized later on.

Mentor

Project

Location

Time Zone

Mentor

Project

Location

Time Zone



India

IST (GMT +5:30)



Cameroon

WAT (GMT +1:00)



India

IST (GMT +5:30)



India

IST (GMT +5:30)



India

IST (GMT +5:30)



Switzerland

CET (GMT +1:00)



USA

PST (GMT-8:00)



India

IST (GMT +5:30)



USA

EST (GMT -5:00)



USA

MST (GMT -7:00)



Portugal

WET (GMT)



Sri Lanka

SLT (GMT +5:30)



Canada

PST (GMT -8:00)



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

  • JUnit, REST-assured

Hints

  • When you need help, ask for help! Do some searches before asking, please. We are very excited for you to join us, but we need to know that you're willing to put in the time and effort required to do your part. When you do ask, ask well.

  • Not sure if you are qualified? Download and build the code, then run the Platform and the reference user interface. Instructions for doing so are available at Getting started - Contributing to MifosX.

  • Email the mifos-developer mailing list with your questions and project ideas.

  • Install Skype for (generally infrequent) video calls. You'll need a headset for Skype, too.

Project Ideas

All 2016 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 Mifos X platform, the world's only open platform for financial inclusion and is banking delivered as a service via the cloud. Mifos X 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 Mifos X platform. 

REST API "live" documentation (Swagger, SpringFox)

Mentors

@Aleksandar Vidakovic, @Michael Vorburger

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 Community App Enhancements (Completed)

Mentors

@Gaurav Saini, @Pranjal Goswami

Overview & Objectives

Our AngularJS Community App is the standard application on the Mifos X platform 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

The project will involve the following:

  • Update the AngularJS version to 1.5.x

  • Performance improvements by introducing on demand loading

  • Implement a new skin for the app

  • Migrate the stylesheets to Sass

  • Upgrade to latest version of http://angular-ui.github.io/bootstrap/

  • Upgrade all plugins to versions compatible with Angular 1.5.x

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 (In Progress)

Mentors

@Gaurav Saini, @Pranjal Goswami

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:

  • 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

More Information on Project

Android Field Operations App Version 3 (Completed)

Mentors

Satya Narayan

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, several outreaching interns added in significant new enhancements including refactoring, implementation of material design, offline, surveys, and new functionalities taking it from Version 1 to Version 2.

This project would continue that work and transform it into Version 3 - by following the refactoring design standards, providing a design refresh, and adding in new functionality.



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

  • Extending offline support throughout the app

  • Redesigning some of the navigation and workflows

  • Implementing major new functionalities like collection sheets for savings and loans at the group and individual, staff notifications, and more.

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 development (In Progress)

Mentors

@Swapnil Agarwal

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

Develop Android Screens:

  • 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

  • Fill up Questionnaires

Integrate with the corresponding APIs on the Mifos platform.

Helpful Skills

Android 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

Customer Self Service

Customer Self Service - Phase 2

 Self-Service - Web/Hybrid App Development (In Progress)

Mentors

@Gaurav Saini

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.

The focus of this project would be designing and implementing a clean and simple Meteor.JS application that can be used as a reference web & hybrid mobile 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.



Description

Develop MeteorJS 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, MeteorJS

Impact

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

Other Resources

Customer Self Service

Customer Self Service - Phase 2

 Integration of Egalite Agent Banking App

Mentors

@Ashok Auty

Overview & Objectives

Agent Banking has become a key new delivery channel to increase reach, lower cost, and broaden the depth of services available. We will be taking over the Egalite codebase that's being donated to the Mifos Initiative by BFSI Consulting - it's a fully functional Android-based app for agents that works with any core banking system. This project would involved extending the application so it fully integrates with and works on top of the Mifos X platform

Description

The current codebase is stand-alone and can integrate with any core banking system. This project will involve converting it to work on top of Mifos X by leveraging the Mifos X APIs for all functionalities that exist in Mifos X and adding in APIs for the functionalities that aren't present in Mifos X but in Egalite. The project will consist of the following:



1) Integrate the existing web service into Mifos X

2) Extend the webservice to use Mifos related data

3) Modernize the front end by using Material design

Helpful Skills

Android, REST, Java,  

Impact

By enabling branchless banking, the costs of serving the poor are dramatically lowered, outreach can be extended to rural offerings, and brand new products and services that are more relevant can be delivered.

Other Resources

 Self-Service - USSD App Development

Mentors

@Antony Omeri

Overview & Objectives

This has a dependency on the Self-Service backend API's being available 

Description

Develop USSD App that allows clients to:

  • Login

  • View Own Accounts (deposits and loans)

  • View Own Accounts' Transactions (deposits and loans)

  • Initiate Transactions from own account (repayments, deposits, transfers)

1. Loans

  • Apply loans

  • Check loan balances

  • View summary of last few transactions

2. Savings

  • Check balance

  • Withdraw (To mobile money

  • Transfer

3. Other Services on the USSD menu

  • Can add the service that is useful to the mifos users/customers



Helpful Skills

USSD, Java, SQL, Finite State Machine (FSM)

Impact

Allows a member/client in having a self-service channel allowing them more direct control and visibility into their financial livelihood. Enable members of the society on-demand access to their.financial records even with basic mobile handset

Other Resources

http://mycloudcode.com/category/ussd/

 Mobile Money Integration - East Africa (In Progress)

Mentors

@Antony Omeri

Overview & Objectives

Mobile money is rapidly transforming financial inclusion by providing more immediate, impactful, affordable, and secure financial services to the client. Mobile money platforms like M-Pesa offer the client unparalleled value in terms of convenience, security and the possibility of new services and products that are more in line with real-world financial habits.  For financial institutions and their clients to fully scale mobile money and leverage its potential, it needs to be fully integrated with their core-banking system.

Description

Based on the extent of the APIs available through the various mobile money platforms, the level and seamlessness of integration can vary from real-time to end-of-day file-based integration.  This project would work to provide several file, message, and or API-based reference integrations with leading mobile money platforms, including