Skip to content

Instantly share code, notes, and snippets.

@SupreethSudhakaranMenon
Last active February 12, 2020 05:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SupreethSudhakaranMenon/a20251271adb341f949dbfeb035191f7 to your computer and use it in GitHub Desktop.
Save SupreethSudhakaranMenon/a20251271adb341f949dbfeb035191f7 to your computer and use it in GitHub Desktop.
GSoC'19 Final Report

Google Summer of Code 2019 Final Report

logo

Organisation : Apache Software Foundation / Mifos

Project Name : Scorecard for Credit Risk Assessment

Mentors : Lalit Mohan and Victor Romero

Project GitHub repository link :

Pull-Request

Issues Solved

Commits

For web-app (Frontend)

The following link below contains RoutingModule, Html, Scss, Spec.ts, Component.ts, Module.ts and Service.ts files for Feature, Criteria and Configuration Screen and Details page for each of them.

For fineract (Backend)

The following link below contains API, Domain, Model, ErrorHandling(Error Model,Fault Model), Repository and Service files for Feature,Criteria and Configuration Screen and Details page for each of them.

Overview of the Project:

Abstract – Develop Interfaces for Credit Risk Assessment Scorecard. Develop UI interfaces, API layer and DB for setting up Features, their relation and criteria for risk assessment of a potential/existing loan. The work includes developing UI, APIs for CRUD in line with MifosX practices and DB layer.

Project Implementations:

Creating User Interfaces

  • Feature Screen :
    This User Interface allows addition of new features. The possible values for "Value Type" - Binary, Nominal, Interval, Ratio. The allowed "Data Type" - Numeric,Character and Date.Category has the broad grouping of new Features. There is also a status box for showing the active/inactive state and there is no hard delete.
    feature

  • Configuration Screen :
    This Screen will be used for mapping various loan products to feature for Color Coding of Green, Amber and Red. This will be primariily used as a scorecard for the loan. "Green" indicates the loan can be given or the status for the loan is good. "Amber" indicates that the loan needs to be futher reviewed and "Red" indicates that the loan needs to be rejected / it is potentially bad. configuration

  • Criteria Screen :
    This User Interface will be used for obtaining key values for the feature. These features may be coming up from DB schema(requiring SQL) and some could be from an API (XML or JSON). The scoring is performed based on the given API/SQL , the data retrieved based on the "key" value. For example, "DOB" is extracted from database which is used for identifying "Age" of the customer. Office staff uses the screen for setting scores for various age groups.
    criteria

  • Scorecard Screen :
    This Screen will be used for profiling a Loan/Potential Loan based on rules recognised in previous screens, statistical methods or machine learning methods. Score

Developing Backend Code
The whole Backend Codebase is written in Java. Java is highly scalable and also facilitates rich ecosystem. Since there are many important resources in Java Ecosystem i have used many of them in my code development. Came across and got to know different frameworks used in the development and made use of JAX-RS and SpringMVC Framework. Went through some of the crucial topics used for the Development , Bean content, Dependency Injection, Inversion of Control concepts.

Project Structure(Frontend)
Mifos X Web App is the revamped version of the Mifos X Community App and is the default web application built on the top of the Mifos X Platform for the Mifos User Community. It is a Single-Page App (SPA) written in standard web technologies HTML5, SCSS and TypeScript. It uses the popuplar Angular Framework and Angular Material for material design components. - WEB-APP

  • src
    • app
      • feature
        • -> feature-routing.module.ts
        • -> feature.component.html
        • -> feature.component.scss
        • -> feature.component.spec.ts
        • -> feature.component.ts
        • -> feature.module.ts
      • configuration
        • -> configuration-routing.module.ts
        • -> configuration.component.html
        • -> configuration.component.scss
        • -> configuration.component.spec.ts
        • -> configuration.component.ts
        • -> configuration.module.ts
      • criteria
        • -> criteria-routing.module.ts
        • -> criteria.component.html
        • -> criteria.component.scss
        • -> criteria.component.spec.ts
        • -> criteria.component.ts
        • -> criteria.module.ts
      • scorecard
        • -> scorecard-routing.module.ts
        • -> scorecard.component.html
        • -> scorecard.component.scss
        • -> scorecard.component.spec.ts
        • -> scorecard.component.ts
        • -> scorecard.module.ts

The same structure is followed for the details page for each of the screen.

Project Structure(Backend)
Apache Fineract provides a reliable, robust and affordable solution for financial Institutions. Fineract .x is a mature platform with open APIs, Fineract CN is a cloud native, microservice architecture also supports open banking APIs.
The Code for the Screens have been written in a structured way following the Mifos Standards.

  • fineract-provider
    • src
      • main
        • java
          • org.apache.fineract
            • scorecard
              • configsection
                • -> api
                • -> domain
                • -> model
                • -> repository
                • -> service
              • criteria
                • -> api
                • -> domain
                • -> model
                • -> repository
                • -> service
              • feature
                • -> api
                • -> domain
                • -> model
                • -> repository
                • -> service

Challenging Pieces
For me , the most challenging part was :

  • Installing the Fineract locally on my system.
  • Debugging the Application through IntelliJ.
  • Handling the Gradle build automation created upon the concepts of Apache Maven which introduces Grrovy based domain specific language instead of the XML Form used by the Apache Maven for declaring the project configuration.
  • Coding the Back end portions for the Screens.

Leftover Work

  • Implementation of the Scorecard Screen (Backend Java Code)
  • Client Side and SQL/API Validation

Future Work

  • Statistical Models and inclusion of Machine Learning should be done.

Other Works

Conclusion

  • I really had an amazing experience working with Mifos Community. I would really like to thank Ed Cable and my mentor Lalit Mohan for giving me this oppurtunity. In the community i found people very helpful and spend time with us to resolve any issues or blockers we face during the coding period. Weekly Intern Check-in Meeting is one of most useful resource where people could put up their problems related to the project they are working on and get it solved.I got to learn a lot of things while doing this project, i was amazed by the way how really hard and all the efforts are put in by the open source development community and make things easier for the people all around the world. Being an ECE student i got a lot of exposure to the technology used on software side. I will also complete the leftover work after my GSoC period and will be updating it regularly keeping in touch with Lalit. I really look forward to work with the Mifos Initiative in the near future and also make my contributions to the betterment of people which would give me satisfaction and make me feel proud of bringing social impact in society.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment