Google Summer of Code 2015 Ideas

Google Summer of Code 2015 Ideas

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

 

 

We're currently working on our application and ideas lists for the 2015 Google Summer of Code. Applications are due on February 20 and Mentoring Orgs are announced on March 2.

 

2015 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 2015 will have the option to work on a variety of projects related to Mifos X - our core back-end Java platform which provides a full set of RESTful APIs to deliver financial inclusion, our front-end Community App built on top of the AngularJS framework, and a variety of other apps including our Android-based mobile client. 

 

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.

Mentoring

Mifos folks are constantly working remotely (mainly using Skype), especially in supporting remote contributors. We often do video calls and desktop sharing If possible, we'd love to meet you in person! Specific mentors for each project will be listed below.

These are the tentative mentors for the 2015 program - we'll update with any changes.

Mentor

Project

Location

Time Zone

 

India

IST (GMT +5:30)

 

India

IST (GMT +5:30)

 

Ghana

GMT

 

USA

PST(GMT -8:00)

 

India

IST (GMT +5:30)

 

Sri Lanka

IST (GMT +5:30)

 

India

IST (GMT +5:30)

 

Netherlands

CET (GMT+1:00)

 

USA

PST(GMT -8:00)

 

Germany

CET (GMT+1:00)

Project Ideas

All 2015 projects will be on the new Mifos X platform or various apps built on top of its RESTful APIs. Mifos X is 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. 

Business Rules Engine

Mentors

@Nayan Ambali

Overview & Objectives

A business rule system enables these financial institutes policies and other operational decisions to be defined, tested, executed. Rule engines typically support rules, facts, priority (score), mutual exclusion, preconditions, and other functions.

This module will enable MFI admin to add, remove or modify the business rule against pre-defined work flows in the application.

Description

As financial institutes, the business process of the institute is governed by local regulatory, and internal rules and rules defined by other other stake holders. And MIS should have provision to define these rules in the application to achive the objectives of these rules defined by various stake holders.

Example: Insurance company does not provider insurance to any person above 65 age. In that case in the MIS if users tries to attach a insurance feed to a client's loan account whos age is more than 65 years then "business rule engine" should prevent that action with appropriate message.

The implementation would probably have 4 parts to it:

a) Code Hooks - Extend functionality of event listeners (what was done for "Guarantor Release for Blocked Funds" for loans) to include key business events like loan creation, loan approval, loan disbursement, savings account creation, savings account activation, savings withdrawal, client creation, client approval, etc. Pre- and Post- events to be enabled for these business events.
b) Enable rules (using Drools) for specific business events (Pre- and Post-)
c) If rule enabled, then evaluate rule. Rule should get the business object and any parent business object as input (Example for a loan disbursement, the loan account and the client details will be automatically supplied as inputs to the rule; For a savings withdrawal; the transaction, savings account and client details will be input to the rule. Evaluate rule and return true or false if the action should continue or not.
d) Implement Client level and account level limits using these rules - this will involve evaluating rules on data that is not directly supplied - For example: customer wants to withdraw 5,000. But has already touched the limit of 10,000 per day. The rule should be capable of evaluating the totals of transactions (i.e. use data not directly supplied to the rule).

Helpful Skills

SQL, Java, Javascript, Git

Impact

It helps MFIs to follow the compliance set for regulatory and various stake holder. Also reduces the fraudulent cases

Other Resources

 Business Rules Engine

Mobile Field Office Planner

Mentors

@Nayan Ambali

Overview & Objectives

To allow field-based staff to manage their daily schedules and to ensure that their supervisors are able to review these tasks and to plan field operations and bring in more efficiency and transparency for field operations. To meet the requirement, Android based app need to be developed to cover these uses cases. And this app will be an extension to MIfos X Android Client built by GSOC intern, Ishan Khanna in 2014.

Description

Field officers typically have a predefined set of tasks to follow, for example: Do survey for a locality, Conduct Group Trainings, Conduct Group Tests, Do Center Meetings and Collections. Each could have a task code to make operations streamlined.

Field officers manage their calendars by selecting an activity and specifying a center, date and time for which this activity is planned. This becomes their planned activity for this slot.

A simple workflow to manage each slot – when field officer starts the activity, status of the slot is changed from “new” to “open” and when the activity is completed, it is set to “closed”. It would be ideal to manage this workflow using a mobile tool – preferably an inbound SMS message. For example: an SMS from the field officer’s phone with the text “OPEN 1430” will change the status to “OPEN” of the field officer’s activity that was planned for 2:30pm.

Field officer may change his plan up to a certain time prior to the start of the activity.

Auditors and branch managers will review the activities and track the field officers’ planning and efficiency.

Helpful Skills

Java, XML, SQL , Git, SMS integration, Android app development is plus

Impact

Field efficiency and operational efficiency

Other Resources

See SMS Integration and Outbound SMS

Mifos X Android Client Version 2

Mentors

@Nayan Ambali

Overview & Objectives

As financial institutions serving the poor extend to more rural outlying regions and adopt more lightweight branchless and paperless operations, mobile field operation tools are essential. In 2014, GSOC intern Ishan Khanna built out version 1 of our Android-based mobile And this app will be an extension to MIfos X Android Client built by GSOC intern, Ishan Khanna in 2014.

Description

There is a lengthy list of potential Version 2 requirements for the Mifos X Android client including:

  • Improved offline support on the Android Client

  • Optimization of UX (implement Material Design standards)

  • Receipt Generation

    • Add Bluetooth printer capabilities in the app (one of the clients requested on the mailing list)

    • SMS Receipt Generation

  • Field Officer Planner Features

    • To-Do List Functionality

    • Integration of Google Calendar API or Notification based system to keep the officer updated with the upcoming meetings.

  • Full support for savings and loan collection via the collection sheet.

  • Location-Based Functionality (GIS)

    • Location Tracking of Field Officers while they are on the move (Daily Route of Field Officer)

    • Plot Map from Office to Center Meeting

    • Pinpoint actual GPS location of client residence

  • Improved Survey Collection

  • SUSU collection

  • Fingerprint capture of customer

Helpful Skills

Java, XML, SQL , Git, SMS integration, Android app development is plus

Impact

Field efficiency and operational efficiency

Other Resources

Improvements to User Generated Documents

Mentors

@Pranjal Goswami

Overview & Objectives

Provide an easy way for reports to "merge-printed" from the Client or account page. Currently, if a user needs to print a specific letter for customer or loan account or savings account - the only way is to develop a report or use stretchy report. This is difficult to use and cannot be invoked from a client or account page.

Description

 

The following enhancements will be needed:

  • Improvements to the UI - to provide Logical names for pre-defined fields

  • Extend it for Deposit Accounts too

  • For Loans and Deposits accounts, we should be able to access Client Details

  • For loans - allow Loan Summary and Tranche details tabs to be accessible in the template

  • Allow data table fields to be accessible for Clients and Loans and Deposits

  • For Loans and Deposits - allow transaction tab to be accessible in template - need a way to specify a specific transaction type and/or a date or a date-range as inputs for these at the time of invoking the report

  • Allow basic filters like date-range for transactions related templates

  • Allow totals for amount fields for transactions related templates

 

Helpful Skills

SQL, Java, Javascript, Git

Impact

Easy to print reports like Loan Sanction Letter, Savings Transaction report, Deposit notice etc.

Other Resources

 

AngularJS Community App Enhancements

Mentors

@Vishwas Babu A J

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 and AngularJS refactoring.

Description

The project will involve the following:

  • Performance improvements by introducing on demand loading

  • Implement Material Design and Redesign pages and areas of the application needing improvement:

    • Log-in page, chart of accounts, permissions, data tables, collection sheet, etc.

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

Helpful Skills

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

Impact

Better usability. improve the productivity of users and actions will be taken on time.

Other Resources

Usability and Design

Batch Jobs for Loan Loss Provisioning and Dividend posting

Mentors

@Vishwas Babu A J

Overview & Objectives

Across the globe, thousands of financial cooperatives are bringing financial inclusion to the Base of the Pyramid in the form of SACCOs, credit unions, cooperative societies, etc. One major feature gap that we still don't fully support in Mifos X is proper management of shares and member equity and calculation and posting of dividends. This project would cover that functionality as well as adding loan loss provisioning. Project involves adding two additional batch jobs in Mifos:

a) For Loan Loss Provisioning

b) Dividend calculation and posting for Share accounts

Description

Batch job for Loan Loss Provisioning

- create configurable overdue buckets in the database
- create accounting configurations/rules for each of the configurable buckets

- Facility to specify this for all loan products or have product specific configurations
- batch jobs to run these rules
- during transactions – some of these may need to be reversed

Batch job for Dividend calculation and posting:
a) Define and design for a set of configurations:
- Set Inclusion / Exclusion criteria
- Amount or percentage of profits to be distributed
- Pro-rata or not for members who were present for part of the year or share balance increased or decreased during the year
- Calculation logic - based on balance of share accounts

- Accounting heads for posting dividend

b) Preview screen - for viewing calculated dividend values and giving approval to proceed (and excluding some accounts)

c) Post Dividends - entries that were approved in b) will be posted to the relevant accounts and accounting entries passed. This batch job will never be scheduled, but will always be manually invoked.

Helpful Skills

SQL, Java (Jersey, Spring, JPA), Javascript (knowledge of Angular JS is a plus), Git

Impact

From a business perspective, these add a lot of value in automating some of the key year end computations

Other Resources

 

Two Factor Authentication for certain types of transactions

Mentors

@Markus Geiss (Deactivated)

Overview & Objectives

Enable two factor authentication for certain types of transactions - for example transfers initiated, need to be confirmed via a One-Time-Password generated by Mifos and sent via SMS to client's mobile number.

Description

a) Need the existing SMS integration to be stabilized
b) OTP (One-Time-Password) Generation and storing - at Mifos

c) Sending of OTP via SMS and Email

d) OTP verfication and expiration

Helpful Skills

SQL, Java, Javascript, Git

Impact

Provides more security for clients especially during loan disbursements and savings withdrawals or transfers.

Other Resources

 

Self-Service Application - Mifos Platform Changes

Mentors

@Markus Geiss (Deactivated)

Overview & Objectives

Develop a set of APIs that can be used by a front end application that is meant for Client/Member Self-Service

Description

Design for how the self-service APIs will be invoked and internal design on the Mifos Platform to support self-service.

Develop a set of APIs for the following:

  • 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 for own profile or accounts - customer facing - based on Data tables

Helpful Skills

SQL, Java, Javascript, Git

Impact

Allows a member/client in having a self-service channel - i.e. online banking interface through a browser or smartphone app.

Other Resources

 

Self-Service - Web App development

Mentors

Gaurav Saini

Overview & Objectives

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

Description

Develop AngularJS 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 (Transfer to own savings account, payment to loan, transfer to another member)

  • Fill up Questionnaires

Integrate with the corresponding APIs on the Mifos platform.

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 Channels

Self Service Portal (Client-Level APIs)

Customer Self Service

Self-Service - Android App development

Mentors

TBD

Overview & Objectives

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

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

 

Data Tables Improvements to Support Workflows

Mentors

@Binny Gopinath Sreevas (Unlicensed)

Overview & Objectives

Workflows can be used for adding additional data/surveys for capturing data or adding checklist to a pre-defined workflows at certain points of the workflow (scope does not include adding custom workflows). This project would build off the existing Data Tables modules to add enhancements for pseudo-workflows.