Google Code-In 2018
Get Stoked - End Poverty. One Line of Code at a Time.
The Mifos Initiative will be participating in Google Code-In 2018 as a sub-organization underneath DIAL as the umbrella organization. Browse sample tasks below for an understanding of the types of work we have available.
2018 Google Code-In (GCI) - Get To Know Mifos
After participating in Google Summer of Code in seven different summers and GCI in 2014, 2016 and 2017 we look forward to the opportunity to work with pre-university students through Google Code-In. As both a 501(c)3 non-profit and an open source project, our global community has a diverse range of tasks (both technical and non-technical) that will be a valuable experience for the students. Students will gain exposure to an active open source project, a widespread global community, and expand upon a wide range of discipline as they use technology to help alleviate global poverty.
Students in 2018 will have the option to work on a variety of projects related to the back-end Apache Fineract platform, our front-end Web App built on top of the AngularJS framework, and a suite of mobile apps including our Android field officer app, Android mobile banking app, Android mobile wallet framework and AngularJS Online Banking App.
- What is Mifos X?
- How is the platform designed?
- Watch how Mifos technology is helping end world poverty
- What do students work on for Mifos?
- What is it like contributing to Mifos?
- Mifos GCI Wrap-Up for 2017 | Mifos GCI Wrap-Up for 2016 | Mifos GSOC Wrap-Up for 2017
Get Excited!
Watch the following videos to learn about our gigantic mission and the game-changing platform we've built to achieve it.
Useful Resources
Staying in Touch
The best place to find someone to chat to about Mifos is in our main Gitter Chatroom at https://gitter.im/openMF/mifos. For coding related questions, you should subscribe to our Mifos and Apache Fineract developers lists which can be accessed from http://mifos.org/resources/community/communications/
GCI students will have the opportunity to work on the following types of tasks:
- Code: we have a range of introductory coding tasks across our Java platform, AngularJS community app, and Android field officer and client self-service apps
- Platform - Apache Fineract: Source Code | Issue Tracker | Mailing List
- Web App - Mifos X: Source Code | Issue Tracker | Mailing List | Gitter Chatroom
- Mobile App - Android Field Officer App: Source Code | Issue Tracker | Gitter Chatroom
- Mifos Mobile - Android Mobile Banking App: Source Code | Issue Tracker | Gitter Chatroom
- Online Banking App - Web: Source Code | Issue Tracker | Gitter Chatroom
- MifosPay - Mobile Wallet Framework: Source Code | Issue Tracker | Gitter Chatroom
- Mifos Payment Gateway: Source Code | Issue Tracker | Gitter Chatroom
- Documentation/Training: Most of the end users of our software aren't super-technical. Documentation is critical - we have a number of short how-to guides, training slides, and video tutorial to work on for using the software and engaging with the community.
- Fineract Wiki: https://cwiki.apache.org/confluence/display/FINERACT/
- Mifos X User Manual: User Manual
- Outreach/Research: As a global non-profit with a rich social mission to bring financial services to the poor, we have an enormous amount of non-coding work to get done in our community - on the marketing front this involves product positioning and collateral, donor and volunteer outreach, social media management, CRM & contact management, digital media design, as well as analysis and research of our competitors and new financial inclusion products and services.
- Quality Assurance: Mifos X is enterprise-grade, mission-critical software to run a bank - quality, security, and performance couldn't be more important - as our software continues to grow, we have a range of manual and automated testing tasks as well as simply user testing our web and mobile apps and reporting usability improvements.
- User Interface: Since many end users of our software aren't that technically literate, an optimal user experience is ever more valuable, various areas of our web and mobile apps as well as our community websites could use some mockups and wireframes.
Example Tasks
Coding
Task: Mobile Banking App - Fix Issue with Wrong Values being Displayed.
Full details of this issue can be found in Github Issues along with screenshots and steps to reproduce at https://github.com/openMF/self-service-app/issues/456. Under the loan details view in the Android Mobile Banking App, both values are wrong for Next Installment Amount should be 987.72 (but showing total outstanding) and Next Due Date should be 02 February 2017 (but showing disbursement date)
Tags: Android, Mobile Banking, Java, Fintech
Task: Mifos X Web App - Required Field should not get populated after clicking on cancel button
In the Mifos X Web App, after clicking on cancel button "Required Field" get populated in the particular page in several sections including Create Office page, Create Holiday page, and Create Savings Product page. Required Field should not get populated. Please see https://github.com/openMF/community-app/issues/1655 for full details.
You can test this out at https://demo.openmf.org (mifos/password). This can be changed by updating the Mifos X Web App (Community App) with source code located at https://github.com/openMF/community-app. Please reference this Getting Started Guide to familiarize with the codebase.
Tags: Web, Angular, Fintech, Core Banking
Task: Convert PPI Scorecard and Lookup Tables for Three Countries
The PPI is a ten-question survey with lookup tables to assess how much a client a is moving out of poverty. It's a valuable social impact measurement tool and we have support in Mifos for capturing these surveys. However the surveys must be in XML format.
Please refer to the main ticket https://mifosforge.jira.com/browse/MIFOSX-2407 and complete the manual conversion process for three countries starting from the top of the list and moving down working on the sub-tasks that aren't in progress or resolved.
Task: Fix Localization issues with typos and bad grammar in message strings
In several of the message strings available for translation, there are both typos and grammatical mistakes which need to be addressed. The listing strings can be found at https://github.com/openMF/community-app/labels/TranslateWiki. Pull requests can be made for each separate commit.
You can test this out at https://demo.openmf.org (mifos/password). This can be changed by updating the Mifos X Web App (Community App) with source code located at https://github.com/openMF/community-app. Please reference this Getting Started Guide to familiarize with the codebase.
Tags: AngularJS, Java, Javascript
Task: Swagger Documentation of Fineract API
Swagger is used for the dynamic documentation of REST API for Apache Fineract which can easily replace apiLive.htm ( which is the current documentation)
In most of our cases we are using @Api, @ApiOperation, @ApiImplicitParams, @ApiResponses, @ApiParam annotations for dynamic documentation of Fineract API’s
For Information about Swagger Annotations refer Swagger-Core Annotations
Refer the PR #409 to get details about the integration of Swagger on Fineract and how Annotation are used in the Pull Request
Follow more on the Documentation for Integration of Swagger on Fineract at [ https://goo.gl/6cHv8F ]
Overview and Objectives: Annotate the StandingInstructionHistoryApiResource.java with Swagger Annotations and in the field description and for the specific values for the annotation can easily be found at the current documentation
Description: 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, Jersey, Swagger, REST, Git, Gradle
Resources: See the starting of Document
Tags: Java, Swagger, APIs, Documentation, Spring
Documentation/Training
Task: Update User Manual for Android Mobile Field Operations App for new Collection Sheet User Interface
During the past Google Summer of Code program, Tarun Mudgal, built in support for a mobile interface for the collection sheet for the bulk entry of data. Based on the user manual for the collection sheet in the web app, the screencshots provided by Tarun, you should add a new section to the user manual on our MIfosForge wiki powered by Atlassian's confluence. You should download the app from the Google Play store, and follow the instructions to load a collection sheet for a given date for groups, load a collection sheet for a given date for individuals, apply payments, and submit the collection sheet. Screenshots should be taken throughout the process and included in the documentation at Mifos Android Client User Guide. Source code and technical documentation can be found at https://github.com/openMF/android-client
Tags: Documentation, Android, Mobile, UX
Task: Create Screencast to Demo Basic Features of Android Mobile Banking App
During the most recent Google Summer of Code, interns have implemented a brand new Android mobile banking app. It includes some powerful new consumer-facing features that would be great to highlight in a brief demo. Your demo should highlight the new features and show the common workflow a user would go through - logging in to the app for the first time, viewing accounts, making a loan payment, making a savings deposit, etc. Demo video should be no more than 2 minutes long. You can hook up your phone via a data cable to your PC and then based on your environment, we'll recommend a program to record the screencast. Source code and technical documentation can be found at https://github.com/openMF/self-service-app Gifs and screenshots of major features can be found at: https://goo.gl/NZFMon
Tags: Videos, Android, Mobile, Screencast
Task: Create a How-To Guide on Submitting a Bug Report in GitHub Issues
We recently started using GitHub issues for reporting bugs and new feature requests for our web and mobile apps that are powered by Apache Fineract. We need to create a simple guide on how to use the issue tracker and how to report a good issue as a GitHub wiki page. You can follow the previous guide at: Bug Entry Guidelines. Please explain what each field is, take screenshots of the steps. Bonus - create an issue template in GitHub.
Tags: QA, Github, Issue Tracking, Documentation
Task: Document Standard Reports in Mifos X with examples
Mifos X ships with a number of standard default reports representing the most commonly request, loan, client, accounting, and funds reports. We need to provide a short description of each report, the audience it's directed at, a list of the fields in the report, its available formats, and selectable parameters. For the task, you will run each report in our demo server, generate it as a PDF to upload to our wiki as an example, and add the descriptive details in the table found at Standard Reports Field Descriptions.
Tags: Pentaho, Business Intelligence, Reporting, MySQL, Documentation, Confluence
Task: Create Set of Training Slides for Two-Factor Authentication
To assist our customers in using the Mifos X web app, we want to provide a set of training slides based off of our existing documentation. Training Slides should provide step by step instructions along with relevant screenshots from the application. Training slides should be created as a Google Slides presentation. This set of training slides should cover the following:
- How to Create a New Share Product
- How to Create New Shares Account
- How to Issue Dividends
Use the following documentation at Share products and Dividends and the Demo Server (https://demo.openmf.org) with credentials mifos/password to configure.
Tags: Documentation, Training, Shares, Dividends, Users
Task: Verify links in Wiki User Manual for Mifos X Web App are Accurate
Over time as we move pages around on our wiki and add new functionality, links get broken or outdated. To ensure our User Manual is up to date and accurate we must go through and verify the links. You should navigate to the beginning of the user manual and attempt to traverse through it testing each link. Note the broken links you find and update them if you are able to. You can also use a broken link checker tool for your respective browser. More details on this issue can be found at - MXD-34Getting issue details... STATUS
Tags: Documentation, User Manual, Confluence, Wiki
User Interface
Task: Create wireframes for a Mifos AppStore or Markeplace
As more and more partners creates solutions and apps powered by Mifos and Apache Fineract, we need to make this discoverable by creating a marketplace or appstore for potential users to discover and download these innovations. Think of it like an appstore, a Google Play store or Wordpress plugin store. We use Wordpress for our website and want to use a plugin to support this functionality. Student should create wireframes in Balsamiq showing the home/landing page for the marketplace which includes a slider or feature to highlight specific apps, a navigation and /or search interface, a wireframe for the search interface and return of listings, and a wireframe for a specific listing in the marketplace/store. This task involves creating a wireframe mockup in Balsamiq (using an account provided by Mifos)
Task: Design Wireframe for Mifos Partner Directory Profile
Our Mifos.org Partner Directory is a vital tool to help financial institutions wanting to use Mifos X to find a local partner to provide support. Our current directory is powered by the Sabai Directory Wordpress Plugin. We need to improve the usability of the directory by improving the layout of the directory search results and the layout of the profile itself. This task involves creating a wireframe mockup of both the search results and the directory profile. See http://mifos.org/directory/listing/sky-labs for a sample listing. You will use the online tool, Balsamiq, for creating the wireframe.
Tags: UI, Wireframes, Wordpress, Directory, UX, Balsamiq
Task: Design Wireframe for Ability to Search for Merchants in a Mobile Wallet
Now that we have self-service APIs in place, a number of community members are building out self-service application and mobile wallets. We would like to provide reference designs and mockups as guidelines for mobile wallets. This task involves creating a wireframe mockup in Balsamiq (using an account provided by Mifos) for the mobile wallet interface for searching for merchants to make a mobile or electronic payment to. A user should be able to go into the application and either search for merchants by name, list by category, or display across a map. For examples, see http://novopay.in/
A helpful resource and guideline for the design is the slide deck from CGAP outlining the 21 principles of of design of smartphone interfaces for mobile money - http://www.cgap.org/blog/power-smartphone-interfaces-mobile-money
Tags: UI, Wireframes, Mobile Money, Mobile Wallets, Smartphone, Human-Centered Design, Android
Task: Design a landing page for our Mifos Chapters
We have recently launched a network of local Mifos Chapters. We would like to do a high-fidelity design of the landing page to navigate to the respective local chapters. This design should incorporate a global map and the ability to click to the respective chapter website based on the city where they’re located. Here is an example chapter website: http://nairobi.mifos.org/. This should be capable of being implemented in Wordpress. See http://plusacumen.org/ and the Global Chapter Network map for a design we’d be interested in emulating.
Tags: UI, Wordpress, Web Design, HTML5, Balsamiq
Task: Redesign our Donation Page
Our current Donate Now page on Mifos.org is a simple link to a Paypal button. We need to design the donate now and confirmation page to have a better user experience including communicating our mission and impact better along with additional calls to action and the ability to share with friends. Design would include both the main page and the sidebar navigation. You can follow best practices for designing donation pages to assist you. You can create wireframes and actuallly implement the design using the template engine on our Wordpress site. See for http://mifos.org/take-action/donate/ for our current page.
Tags: Design, Balsamiq, Wordpress, Online Donations
Outreach/Research
Task: Write a Research Brief on Alternative/Non-Traditional Credit Scoring for the Unbanked
Most of the unbanked lack formal identity and credit history and can't gain access to formal financial services. Numerous providers in the market are develop credit scores to help the unbanked develop a financial identity but looking at behavior, non-traditional metrics. Mifos will ultimately integrate with or directly incorporate some of these tools into the framework but we need to understand and assess the solutions out there on the market.
Please write a summary defining alternative/non-traditional credit scoring and then do small synopses on ten alternative credit scoring providers focused on the base of the pyramid or emerging markets - including the following information - name of the organization, years in operation, total funding received, geographic focus, market focus (type of customer) size of their business (clients, organizations, portfolio, etc.), business model, type of service they provide, the data they analyze for their scoring service, partnership opportunities or APIs available. Feel free to include whatever screenshots, charts, graphics from the provider's websites for the brief and links to any relevant reports, PDFs, whitepapers or downloads from their website.
Research brief should be created in Google Drive as a Google Doc and shared with mentor for review.
Tags: Market Research, Fintech, Due Diligence, Innovation, Credit Scoring
Task: Draft Market Research Brief on Financial Inclusion Sector in Jordan
With more than 2 billion unbanked worldwide still in need of financial services, our community is continuing to push into new regions and countries. Understanding the size, landscape, and needs of a country is vital information before our community can begin to grow there. For this task, you will be responsible for drafting a brief market research report in a Google Doc for the financial inclusion sector of the assigned country, addressing the following points. The report should contain summarized findings as well as links to relevant source material.
Financial Inclusion Sector
What is the unbanked population in Jordan? What is the underbanked population?
Who delivers financial inclusion?
What are the types of organizations? MFIs? Banks? Co-operatives?
How many are there? What sizes are they?
What role do banks play?
Financial Products & Services
What operational methodologies are practiced?
What are the main products and services offered?
How closely do they align with the current functionalities of our platform?
Who are the Influencers?
Associations
APEX organizations
Government/regulators.
Major NGOs
What are major events to attend?
Tags: Research, Community Development, MENA, Due Diligence, Financial Inclusion, Jordan
Task: Write A New "How Mifos is Used" Page For Mifos.org
To illustrate to prospective users of our software, how it works and what the solution actually does, it's nice to provide a mini-case study of how it's used as a back-office software for a banking or a digital banking platform. We haven't created this page on our newer Mifos.org website and would like to write an updated page similar to our old one at http://mifosx.openmf.org/Mifos%20website/mifos.org/about/how-mifos-used.html You should first familiarize with the software and then explain how it's used on a daily basis. This will be posted on our Wordpress website and should include images or screenshots as well.
Tags: Web Design, Writing, Wordpress, Community Management, Social Networks, Marketing, Outreach
Task: Create A Best Practices Guide For Using Facebook For Community Growth
We have a relatively small Facebook following, 3300 followers, and try to engage with them on an active basis by posting content regularly and informing them of ongoing events, product announcements, and using it to recognize members in the community. We know that both as an open source community and a non-profit we could better leverage Facebook to grow our community, target and inform donors, attract new volunteers, and provide better support to our user base. Numerous articles and guides exist on helping to optimize Facebook for companies, communities, non-profits. Please read several of these guides or articles and summarize them in a brief with a list of at least ten best practices we could implement. Possible additional tasks include actually implementing these recommendations.
Tags: Social Media, Facebook, Marketing, Outreach, Community Management
Task: Design The T-shirt For Our Mifos Summit
Each year we hold an annual conference and give out a new t-shirt to community members. We also give the shirts out to our volunteers throughout the year since this is one of our biggest incentives a developer could get :) The design of the t-shirt should have both a tech feel as well as some of the warmth of a non-profit to it. We'd like to do the t-shirt on a dark or blue background so a lighter single color design is preferable. Deliverable for this would be a high-res illustrator or photoshop file of the design. For this task, you would have the freedom to design what you want but it should communicate across collaboration, community, empowerment, financial inclusion, solidarity, innovation, technology. working on a common platform, unity, peer support., diversity given our community is completely global, flexibility and freedom of open source. It could tie in elements of technology like software code/bits and bytes, mobile phones, cloud computing. It could tie in elements of microfinance like different forms of currency, villages, microbusinesses like farming, artisanry, etc.
Tags: Graphic Design, Volunteers, Outreach, Community Management
Task: Update Mifos Events/Conferences Calendar
Mifos sits at the crossroads of a number of different industries – financial inclusion and microfinance, mobile banking, financial services, cloud computing, open source technology, HFOSS (Humianitarian Free and Open Source Software). We attend events regularly to promote our mission, educate about our technology and identify new volunteers, customers, donors, and partners. Having a comprehensive and up-to-date calendar is important for our staff to plan out what events to attend as well as to inform our community of events they can attend. Internally, we track these events via a Google Sheet and also publicize the ones relevant to the community on our public community calendar.
This task would involve updating our current calendar with the dates/times for events that we’ve followed or participated in during the past as well as researching and adding new events to our calendar.
Tags: Events, Community Management, Google Sheets, Google Calendar, Research
Task: Research Our Major Competitors And Complete Matrix On Financial Inclusion Technology Providers
There are a number of different software solutions available to manage the operations of a financial institution serving the poor. We track our competition so we can be aware of new trends and latest innovation as well as help to inform our partners and their respective business development strategies in their markets.
- Competitors to research: Mambu, Oradian, OpenCBS, Temenos, Bankers Realm, Loan Performer
- Comparison Areas
- Loan Products Supported
- Savings Products Supported
- Insurance Products Supported
- Payments Products Supported
- Functional Depth
- Mobile Delivery & Enablement
- Mobile Money Integration
- Mobile Application
- Technology
- Deployment Environment
- Hosted offering?
- Technology Stack (language, database, etc.)
- APIs available
- Offline Access
- Business Development Model
- Support
- Partner Network
- Pricing Model
- Basic Company Info
- Total Customers & Clients Reached
- Market & Product Positioning
- Countries/Geographies of Focus
- Date of Latest Release
- Annual Revenue
- Size of Company
- Recent Major News
Tags: Research, Competitor Analysis, Business Development, Google Sheets, Due Diligence, Finance, Support Models
Quality Assurance
Task: Automated Testing Of Mifos Android Self-Service App (Unit Tests)
This task involves coding of Functional and Instrumentation tests (Unit Tests) for the latest Android Mobile Banking App. Since it is a relatively new app, this would be an awesome opportunity for the intern to learn Testing of an Android App using Instrumentation Test Runner on Android inside out. This would be an ideal task for Google Code in students as the tests have to be written with a certain pattern, therefore no prior knowledge about Mifos wouldn't be a major blocker.
Source code for self-service app can be found at https://github.com/openMF/self-service-app
Tags : Android, Java, Unit Tests, Testing, Git
Task: Do Usability Testing On Loans Functionality In The Android Field Officer App
We have recently added several major new features in our Android field officer app. Major new functionalities have recently going into our Android Field Officer application and to ensure the highest quality and overall user experience, we wan to improve the design and navigation as much as possible. This This task is focused on the loans module in the Android field officer app and you can follow our user manual for how functionality should work: Working with Loan Accounts. You
Tags: QA, Android, Regression Testing
Task: Find/Fix Fifteen Broken Links On Our MifosForge Wiki
Our MifosForge wiki is used to house all of our user-facing documentation, how-to's and tutorials on the Mifos X distribution, and notes on community engagement and volunteer collaboration through programs like GSOC and GCI. You can find and fix broken links in our Mifos X User Zone, our Mifos X space, Community Engagement space, or our Mifos Developer Zone, As we've migrated content to Apache Fineract and new features are released, links sometimes tend to break. You should browse through the wiki and find/fix fifteen broken links. Once you've identified and fixed the broken link, please document these in a Google Sheet that you can share for completion of the task. If you have questions about where a link, should point to, please send an email to our mifos-users and Apache Fineract users mailing list. You should have write privileges to the wiki once you create an account at All functionality in the Apache Fineract platform is exposed through RESTful APIs so that third parties can easily build new applications and solutions on top of the platform. We need to build out and expand our integration test suite for our Java APIs using Rest Assured . Rest Assured makes Testing and validating REST services in Java as simple as doing it for dynamic languages such as Ruby and Groovy. This tasks involves setting up the integration tests for our Shares APIs - https://demo.openmf.org/api-docs/apiLive.htm#shareaccounts
Tags: QA, Documentation, Usability, Wiki
Task: Find And Report Three Bugs Or Usability Improvements In The Mifos X Web App
Having a fresh set of eyes on our software is a great way to identify new bugs or ways to improve the usability of the software. For this task, you'll get to assume the role of a staff person at a microfinance institution and perform some typical scenarios like creating a new client, opening a new loan, creating a new product, etc based on instructions in our User Manual. You will document your experience including general feedback and how to improve the overall user experience and use our GitHub issue tracker to report three specific issues or usability improvements along with screenshots and a clear explanation that you can find. See here for tips on writing a good issue: Bug Entry Guidelines
Tags: QA, Usability, Bug Reporting, User Experience
Task: Set Up Integration Tests For SPM (Surveys Framework) APIs Via Rest Assured
All functionality in the Apache Fineract platform is exposed through RESTful APIs so that third parties can easily build new applications and solutions on top of the platform. We need to build out and expand our integration test suite for our Java APIs using Rest Assured . Rest Assured makes Testing and validating REST services in Java as simple as doing it for dynamic languages such as Ruby and Groovy. This tasks involves setting up the integration tests for our SPM (Surveys Framework) APIs - https://demo.openmf.org/api-docs/apiLive.htm#surveys
Tags: Java (JUnit, Rest Assured), Git, QA, Testing
Timeline