SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Android Field Operations App Version 3
(GsoC 2016 Proposal for Mifos Initiative)
Who am I ? What am I studying? Interests?
I am Rajan Maurya and I am from Delhi, India. Currently I am a 3rd
year student of B.Tech Information Technology
and Mathematical Innovations and enrolled at Cluster Innovation Centre, University of Delhi. I have almost two years
of experience in Android development now. My main objective is to learn as much as possible about Android
development, most of my extra time is spent in learning and experimenting in Android and related technologies. I
started small and have now come to know of many latest and modern advanced libraries, frameworks and APIs. I am
a firm believer of open source and also try to contribute as much as possible to open source. I am a Linux enthusiast
and using Ubuntu as my primary operating system.
I am also selected to receive Udacity Android Developer Nanodegree Program scholarship by Tata Trust and
Google India.
Contact information
Email: rajanmaurya154@gmail.com
Mobile: +91-8010665248
Github: @therajanmaurya
LinkedIn:https://in.linkedin.com/in/rajanmaurya
Time Zone: UTC +5:30
Projects
Some of my previous works:
1. Android App for a Political opinion blog “The Frustrated Indian” using the WordPress REST API to show blog
posts inside the application. I worked with four Team members. there I was the main developer. I used
Retrofit and Okhttp for fetching the post and saving them for offline mode as well as Picasso for image
loading.
Link: https://play.google.com/store/apps/details?id=com.thefrustratedindian
2. Antardhvani 2015: An Android Application for University of Delhi annual cultural festival.
Link: https://play.google.com/store/apps/details?id=antardhvani.du.ac.in.antardhvan
Github: https://github.com/therajanmaurya/Antardhvani
3. Networking Tool: This is the basic android networking tool that implements Ping and traceroute on android
phone.
Github: https://github.com/therajanmaurya/Networking-Tool
4. Bulk-SMS-Service: This application enables the android user to send unlimited SMS by one click because in
android SMS functionality, user can send same message to only ten people.
Github: https://github.com/therajanmaurya/Bulk-SMS-Service-final.
5. Easy Recycler View with Easy Adapter Library: This library gives the functionality to user to make Recycler
View in single line and make Adapter in single line. Adapter has different UI functionality parameters.
Github: https://github.com/therajanmaurya/WpApiUi
There are many other projects you can find on my
Github Repository: https://github.com/therajanmaurya
Project idea and goals
The Mifos Android Client is currently in version 2. Recently, significant new enhancements
including refactoring, implementation of material design, offline, surveys, and new functionalities
have been implemented taking it from Version 1 to Version 2. Now the app is still under
development and this project aims at releasing the version 3. This will add exciting new features
and significant enhancements. Some of the major additions are:
Application-wide offline content availability – All the content which can be viewed in the
app i.e. clients' details, loan details, past loan transactions, surveys, creating etc will be
available offline. It will be stored in the phone, either in the cache or the database.
Refactoring and redesigning the app – There will be many changes in the app including
simple cosmetic ones such as layouts, colors, etc. There will also be functional changes
such as changing how the app is navigated, menus, actions, etc. It will also including the
refactoring of the codebase to make it more readable and manageable to help existing
and new contributors.
Implementing major new functionalities like collection sheets for savings and loans at the
group and individual, staff notifications, editing clients details, and more. An important
point here is that there are many features listed in the mockups document of the app
which are still not implemented, so I'd like implement as many of them as possible.
All of the above will be powered by the underlying APIs provided by the Mifos platform. The data
will be transferred in a RESTful manner.
Approach
After facing these issues, I have come up with a well thought out plan. that makes your Mifos Android Project very
structured and customizable.
Anyone who wants to contribute to the project that can contribute just after a glance at the Mifos Mobile
application manual ( I will prepare a manual with code structure ).
These small steps are the crux of any good project. Here are the guidelines and draft project approach structure
that I will follow.
Re-organizing the app to follow a MVP standard architecture
The app's codebase will be of the MVP Framework that all good applications follow, using MVP
Framework the code readability becomes more suitable and readable and can be maintained for longer duration.
The high-level architecture of the app will be as below:
Source: https://github.com/ribot/android-boilerplate
Once the app follows this structure, it will become much easier to maintain and make changes to it. This solves
one part of the project, i.e. restructuring and refactoring the app. This will streamline the process of making
changes to the flow/navigation of the app. Since, it will now be following a standard convention, the new
navigation and workflow changes will seem natural to implement and also to the end-user.
Additionally, the app will be updated to the latest libraries and APIs such as Retrofit 2, Dagger, etc.
Offline content availability
Once the above part is completed, implementing this will pretty straightforward. According to the structure in
the figure, we will now have to only add a new data helper in the Model part of MVC. And the corresponding linking
code needs to be only written in the Data Manager. All the other parts of app need not be changed.
Increasing code coverage
Right now, there is very little code coverage of the project. There are very few test cases and therefore, the
reliability and quality of code is not upto mark. I am thinking of writing tests for the data layer(DB, API, Retrofit, etc.)
and some of the controller layer. Although I aim to write tests for the view layer(activities and fragments) as well, they
will have lower priority as they are already tried and tested by the platform. But still, I will try to cover as much as
possible. As a sidenote, I am thinking of Junit as a testing framework and mockito as the mock framework.
Implementing new features
There are many features to be implemented, I will not list all of them here, it isn't necessary to do so anyway.
Link to wireframes -
https://mifosforge.jira.com/wiki/download/attachments/34111558/Mifos%20Android%20Mockups
.pdf?version=8&modificationDate=1380225023161&api=v2
What is the schedule of this?
This would be my first GsoC participation ever. Basically, I have three months to complete this project and it is
enough for me to finish it with quality. I would like to divide my tasks into two phases.
1. Phase One I would primarily focus on porting current project into MVP framework with Retrofit 2.0 beta 4
And writing Test cases of current class. We should concern on the primary goals and milestones which the
app demands in this phase.
Week 1,2 –
● Restructuring the current codebase to follow the Model-View-Presenter architecture.
● I have already open the PR and I am working on it.
● Importantly, the Model layer will be developed for this, so that all the data sources, i.e.
Retrofit(API), Database, etc. are all at one place and all the other layer can use the abstractions .
Week 3, 4 –
● Upgrading to latest stable libraries, e.g. Retrofit 2, Picasso,
Dagger 2 etc.
● Writing unit tests to increase code coverage. This is important
we need to make sure future developments doesn't break the stable model layer.
Week 5, 6 –
● Offline content availability. Once we have the abstractions of
MVP in place, we just need to add a data source to the Model layer. Although not simple, but it will
be straightforward as this will not require any changes in the View and Presenter library.
● More test cases will be required to test whether the caching
goes well with the API.
● At this point we need to make sure that cached data + new
requests doesn't hamper the user experience.
2. In phase 2 I would focus on building the additional features that I have mentioned in the proposal, feature
enhancement and bug fixing.
Week 7 –
● Feature addition - Implementing generate collection sheets for
savings and loans for group and individual.
● Staff Notification.
Week 8 -
● Add ability to edit clients' details and show detailed client
information.
● Adding Client notes field (Create and Retrieve).
Week 9 -
● Implementing Group notes (Create and Retrieve).
● Adding feature officer to do list .
● Retrieve, Apply, Approve Loan, Undo loan approval.
● Assign, Unassign Loan officer.
● Withdraw, Reject, Delete Loan Application.
● Update Loan.
Week 10-11
● Providing the application for users and mentors for testing and getting feedback
● Testing the application with different devices with different screen resolutions and identifying
defects. Fine tuning for different screen resolutions if there are any defects.
● Enhancement and bug fixing according to the user feedback.
● Review by the mentors and contributors of the project. Changes according to reviews.
● Documenting code.
Week 12
● Releasing the Version -3 of the application for final evaluation.
.
If organization approves the features I have mentioned in the 'suggestions' section and according to the time limit I
hope to develop those features too. (Probably after the 8th week)
Have you submitted any patches or Source code to MIfos-X yet ?. Please provide link to the commit in
the Github.
Yes, I have submitted some patched and feature enhancements to the project.
Here are my PRs.
1. #PR222 Merged
2. #PR235 Merged
3. #PR223 on Review
4. #PR211 on Review
5. #PR232 Currently working on this PR. Refactoring code into MVP layer architecture. So easily we can shift
Retrofit 1.9 to Retrofit 2.0. when it will be completed, we only need to add data helper for offline saving data.
And bind to Data Manager. All the other parts of app need not be changed.
Motivation
The key motivation factor for applying GSoC in first place is I am an open source enthusiast. And since
Android is also based on open source, I started working on Android. As well as I also use Ubuntu(also open source),
and even most of the apps on my phone are open source alternatives of famous apps. I have been always inspired
by GSoC which encourages open source development. The key factor that drove me to this project is inspiration of
learning freely, and specially for using Retrofit + MVP + Dagger 2.
And the most important fact is that I am very much interested in developing this project as a committer and a
contributor outside the GSoC also and be a part of wonderful open source community. Because I love to have
something to admire which others can be benefited through my commitment! The talented people behind this project
who are still eager to learn so much, inspire me.
Career Goals:
My career goals is to become expert in android and want to help the whole android community. I wants join a
organization where I can work on some interesting and challenging projects. I always wants to feel challenged
professionally.
Why am I the right person for this task?
The most important fact is that I am completely inspired by this idea. I have been working on this project and refining
and adding features continuously since I found out about it while browsing through the organizations in GSoC. As I
learnt more about this project, I became more and more interested in it. And I started reading the code, going through
the docs so that I can contribute as much as I can. This can be verified by seeing my interaction on the repo of the
project. This type of work suits me well as I have previous experience and also I am eager to keep learning more and
more. And the other thing is I love anything related to Java and specially Android. Further I am a dedicated person
with strong commitment. This is evident from the fact that I've already started working on the project and hope to do
so even after GSoC.
Have you contributed to open source projects? If so, which ?.
Yes, I have contributed in the project Apache Taverna Android Application.
Have you any previous experience with JavaScript/Java/Spring/Hibernate/MySQL?
Yes, I have very good experience in Java. You can find my work on Github.
Have you deployed and run the Mifos X Platform (https://github.com/openMF/mifos) and
reference User Interface (https://gihtub.com/openMf/mifosx-communiy-apps)?
Yes, I have run Mifos X platform once. I was thinking that running android-client from local API will be fast. But my
system was not able to run both android studio and IntelliJ idea java simultaneously.
Whats other commitments do you have this summer ? (Working on this project is a full-time job
and must be your primary commitments!)
This summer, I have no other commitments. Working on this project full time is my primary commitment.
Have you participated in any previous GSoC programs?
No. This will be my first ever GSoC experience.
Are you applying to multiple organizations this year ?
Yes, I have also submitted a proposal to the Apache software foundation.
If you answered "yes" to the question, which is your first choice?
my first choice is Mifos Initiative.
Do I have to say any other facts?
Yes. I would like to emphasize what I already mentioned earlier. I am eagerly looking forward to contribute to this
project after the GSoC also as a contributor!
Thank you,
Have a nice day,
Rajan Maurya

Más contenido relacionado

La actualidad más candente

322510830 makalah-ransomware
322510830 makalah-ransomware322510830 makalah-ransomware
322510830 makalah-ransomwareYuditia Ariansyah
 
Requirement Analysis of an Online Job portal
Requirement Analysis of an Online Job portalRequirement Analysis of an Online Job portal
Requirement Analysis of an Online Job portalPrem Raval
 
Online News Portal.pptx
Online News Portal.pptxOnline News Portal.pptx
Online News Portal.pptxSakshiSathe1
 
PPT NEWS PORTAL (2) (1).pptx
PPT NEWS PORTAL (2) (1).pptxPPT NEWS PORTAL (2) (1).pptx
PPT NEWS PORTAL (2) (1).pptxRahulMansotra1
 
SpiraPlan Overview Presentation (2022)
SpiraPlan Overview Presentation (2022)SpiraPlan Overview Presentation (2022)
SpiraPlan Overview Presentation (2022)Inflectra
 
JARVIS - The Digital Life Assistant
JARVIS - The Digital Life AssistantJARVIS - The Digital Life Assistant
JARVIS - The Digital Life Assistantpavan kumar
 
Comprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdf
Comprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdfComprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdf
Comprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdfPape Moussa SONKO
 
Fake News Detection Using Machine Learning
Fake News Detection Using Machine LearningFake News Detection Using Machine Learning
Fake News Detection Using Machine LearningIRJET Journal
 
AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...
AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...
AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...AlienVault
 
Android : Architecture & Components
Android : Architecture & ComponentsAndroid : Architecture & Components
Android : Architecture & ComponentsAkash Bisariya
 
Avast Antivirus
Avast AntivirusAvast Antivirus
Avast AntivirusMizamk
 
androidstudio.pptx
androidstudio.pptxandroidstudio.pptx
androidstudio.pptxSundaresanB5
 
Mobile web site testing report
Mobile web site testing reportMobile web site testing report
Mobile web site testing reportQA Madness
 
Mail Server Project Report
Mail Server Project ReportMail Server Project Report
Mail Server Project ReportKavita Sharma
 

La actualidad más candente (20)

322510830 makalah-ransomware
322510830 makalah-ransomware322510830 makalah-ransomware
322510830 makalah-ransomware
 
Requirement Analysis of an Online Job portal
Requirement Analysis of an Online Job portalRequirement Analysis of an Online Job portal
Requirement Analysis of an Online Job portal
 
Hack like a pro with burp suite - nullhyd
Hack like a pro with burp suite - nullhydHack like a pro with burp suite - nullhyd
Hack like a pro with burp suite - nullhyd
 
Online News Portal.pptx
Online News Portal.pptxOnline News Portal.pptx
Online News Portal.pptx
 
ppt project pk.pptx
ppt project pk.pptxppt project pk.pptx
ppt project pk.pptx
 
PPT NEWS PORTAL (2) (1).pptx
PPT NEWS PORTAL (2) (1).pptxPPT NEWS PORTAL (2) (1).pptx
PPT NEWS PORTAL (2) (1).pptx
 
SpiraPlan Overview Presentation (2022)
SpiraPlan Overview Presentation (2022)SpiraPlan Overview Presentation (2022)
SpiraPlan Overview Presentation (2022)
 
JARVIS - The Digital Life Assistant
JARVIS - The Digital Life AssistantJARVIS - The Digital Life Assistant
JARVIS - The Digital Life Assistant
 
Comprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdf
Comprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdfComprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdf
Comprendre Sudo et Le fichier etc-sudoers-PM_SONKO.pdf
 
Command injection
Command injectionCommand injection
Command injection
 
Desktop assistant
Desktop assistant Desktop assistant
Desktop assistant
 
Fake News Detection Using Machine Learning
Fake News Detection Using Machine LearningFake News Detection Using Machine Learning
Fake News Detection Using Machine Learning
 
AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...
AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...
AlienVault Brute Force Attacks- Keeping the Bots at Bay with AlienVault USM +...
 
Android : Architecture & Components
Android : Architecture & ComponentsAndroid : Architecture & Components
Android : Architecture & Components
 
Security in NodeJS applications
Security in NodeJS applicationsSecurity in NodeJS applications
Security in NodeJS applications
 
Avast Antivirus
Avast AntivirusAvast Antivirus
Avast Antivirus
 
androidstudio.pptx
androidstudio.pptxandroidstudio.pptx
androidstudio.pptx
 
Mobile web site testing report
Mobile web site testing reportMobile web site testing report
Mobile web site testing report
 
LFI to RCE
LFI to RCELFI to RCE
LFI to RCE
 
Mail Server Project Report
Mail Server Project ReportMail Server Project Report
Mail Server Project Report
 

Destacado

gsoc_student for Rajan Maurya
gsoc_student for Rajan Mauryagsoc_student for Rajan Maurya
gsoc_student for Rajan MauryaRajan Maurya
 
Abhishek proposal for gsoc 2014
Abhishek proposal for gsoc 2014Abhishek proposal for gsoc 2014
Abhishek proposal for gsoc 2014Abhishek Kaswan
 
GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...João Paulo Rechi Vita
 
Proposal gsoc2012-matilda-bernard
Proposal gsoc2012-matilda-bernardProposal gsoc2012-matilda-bernard
Proposal gsoc2012-matilda-bernardMatilda Bernard
 
GSOC proposal
GSOC proposalGSOC proposal
GSOC proposallavanya
 
Google Summer of Code at Apache Software Foundation
Google Summer of Code at Apache Software FoundationGoogle Summer of Code at Apache Software Foundation
Google Summer of Code at Apache Software Foundationsmarru
 
gsoc and grub4ext4
gsoc and grub4ext4gsoc and grub4ext4
gsoc and grub4ext4bergwolf
 

Destacado (13)

gsoc_student for Rajan Maurya
gsoc_student for Rajan Mauryagsoc_student for Rajan Maurya
gsoc_student for Rajan Maurya
 
Abhishek proposal for gsoc 2014
Abhishek proposal for gsoc 2014Abhishek proposal for gsoc 2014
Abhishek proposal for gsoc 2014
 
Proposal gcompris
Proposal gcomprisProposal gcompris
Proposal gcompris
 
gsoc
gsocgsoc
gsoc
 
GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...GSoC: How to get prepared and write a good proposal (or how to start contribu...
GSoC: How to get prepared and write a good proposal (or how to start contribu...
 
proposal
proposalproposal
proposal
 
Proposal gsoc2012-matilda-bernard
Proposal gsoc2012-matilda-bernardProposal gsoc2012-matilda-bernard
Proposal gsoc2012-matilda-bernard
 
Gsoc 2016-iit-snk-v1.0
Gsoc 2016-iit-snk-v1.0Gsoc 2016-iit-snk-v1.0
Gsoc 2016-iit-snk-v1.0
 
GSOC proposal
GSOC proposalGSOC proposal
GSOC proposal
 
Google summer of code
Google summer of codeGoogle summer of code
Google summer of code
 
Google Summer of Code at Apache Software Foundation
Google Summer of Code at Apache Software FoundationGoogle Summer of Code at Apache Software Foundation
Google Summer of Code at Apache Software Foundation
 
gsoc and grub4ext4
gsoc and grub4ext4gsoc and grub4ext4
gsoc and grub4ext4
 
Safe heart
Safe heartSafe heart
Safe heart
 

Similar a GSOC 2016 mifos

React Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfReact Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfTechugo
 
React Native App Development.
React Native App Development.React Native App Development.
React Native App Development.Techugo
 
Design and Monitoring Performance of Digital Properties
Design and Monitoring Performance of Digital PropertiesDesign and Monitoring Performance of Digital Properties
Design and Monitoring Performance of Digital PropertiesIRJET Journal
 
Mobile application Project report B.Tech Final year
Mobile application Project report B.Tech Final yearMobile application Project report B.Tech Final year
Mobile application Project report B.Tech Final yearChin2uuu
 
Latest proposal project info zakat
Latest proposal project info zakatLatest proposal project info zakat
Latest proposal project info zakatUmmi Zakiah
 
10 stages of mobile app development process 2022
10 stages of mobile app development process 202210 stages of mobile app development process 2022
10 stages of mobile app development process 2022SynapseIndia
 
Mobile Application Project report
Mobile Application Project reportMobile Application Project report
Mobile Application Project reportChin2uuu
 
AnnadaanPresentation_final.pptx
AnnadaanPresentation_final.pptxAnnadaanPresentation_final.pptx
AnnadaanPresentation_final.pptxDineshDangi16
 
Computer Science Student Final attachment Logbook
Computer Science Student Final attachment Logbook Computer Science Student Final attachment Logbook
Computer Science Student Final attachment Logbook Paullaster Okoth
 
Hybrid model for software development
Hybrid model for software developmentHybrid model for software development
Hybrid model for software developmenteSAT Journals
 
Veera - Infosys - DotNet Devoloper
Veera - Infosys - DotNet DevoloperVeera - Infosys - DotNet Devoloper
Veera - Infosys - DotNet Devolopersurendra p.v.
 
Android project report learning np complete
Android project report learning np completeAndroid project report learning np complete
Android project report learning np completeSubha Deb
 

Similar a GSOC 2016 mifos (20)

React Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfReact Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdf
 
Naresh Chirra
Naresh ChirraNaresh Chirra
Naresh Chirra
 
React Native App Development.
React Native App Development.React Native App Development.
React Native App Development.
 
Ashok cv_1
Ashok  cv_1Ashok  cv_1
Ashok cv_1
 
Design and Monitoring Performance of Digital Properties
Design and Monitoring Performance of Digital PropertiesDesign and Monitoring Performance of Digital Properties
Design and Monitoring Performance of Digital Properties
 
Mobile application Project report B.Tech Final year
Mobile application Project report B.Tech Final yearMobile application Project report B.Tech Final year
Mobile application Project report B.Tech Final year
 
Latest proposal project info zakat
Latest proposal project info zakatLatest proposal project info zakat
Latest proposal project info zakat
 
10 stages of mobile app development process 2022
10 stages of mobile app development process 202210 stages of mobile app development process 2022
10 stages of mobile app development process 2022
 
Resume
Resume Resume
Resume
 
Mobile Application Project report
Mobile Application Project reportMobile Application Project report
Mobile Application Project report
 
Newleaks
NewleaksNewleaks
Newleaks
 
AnnadaanPresentation_final.pptx
AnnadaanPresentation_final.pptxAnnadaanPresentation_final.pptx
AnnadaanPresentation_final.pptx
 
Presentation1
Presentation1Presentation1
Presentation1
 
Computer Science Student Final attachment Logbook
Computer Science Student Final attachment Logbook Computer Science Student Final attachment Logbook
Computer Science Student Final attachment Logbook
 
Nagendran resume
Nagendran resumeNagendran resume
Nagendran resume
 
manoj_new
manoj_newmanoj_new
manoj_new
 
Hybrid model for software development
Hybrid model for software developmentHybrid model for software development
Hybrid model for software development
 
Veera - Infosys - DotNet Devoloper
Veera - Infosys - DotNet DevoloperVeera - Infosys - DotNet Devoloper
Veera - Infosys - DotNet Devoloper
 
Android project report learning np complete
Android project report learning np completeAndroid project report learning np complete
Android project report learning np complete
 
kannan pandian
kannan pandiankannan pandian
kannan pandian
 

GSOC 2016 mifos

  • 1. Android Field Operations App Version 3 (GsoC 2016 Proposal for Mifos Initiative) Who am I ? What am I studying? Interests? I am Rajan Maurya and I am from Delhi, India. Currently I am a 3rd year student of B.Tech Information Technology and Mathematical Innovations and enrolled at Cluster Innovation Centre, University of Delhi. I have almost two years of experience in Android development now. My main objective is to learn as much as possible about Android development, most of my extra time is spent in learning and experimenting in Android and related technologies. I started small and have now come to know of many latest and modern advanced libraries, frameworks and APIs. I am a firm believer of open source and also try to contribute as much as possible to open source. I am a Linux enthusiast and using Ubuntu as my primary operating system. I am also selected to receive Udacity Android Developer Nanodegree Program scholarship by Tata Trust and Google India. Contact information Email: rajanmaurya154@gmail.com Mobile: +91-8010665248 Github: @therajanmaurya LinkedIn:https://in.linkedin.com/in/rajanmaurya Time Zone: UTC +5:30 Projects Some of my previous works: 1. Android App for a Political opinion blog “The Frustrated Indian” using the WordPress REST API to show blog posts inside the application. I worked with four Team members. there I was the main developer. I used Retrofit and Okhttp for fetching the post and saving them for offline mode as well as Picasso for image loading. Link: https://play.google.com/store/apps/details?id=com.thefrustratedindian 2. Antardhvani 2015: An Android Application for University of Delhi annual cultural festival. Link: https://play.google.com/store/apps/details?id=antardhvani.du.ac.in.antardhvan Github: https://github.com/therajanmaurya/Antardhvani 3. Networking Tool: This is the basic android networking tool that implements Ping and traceroute on android phone. Github: https://github.com/therajanmaurya/Networking-Tool 4. Bulk-SMS-Service: This application enables the android user to send unlimited SMS by one click because in android SMS functionality, user can send same message to only ten people. Github: https://github.com/therajanmaurya/Bulk-SMS-Service-final. 5. Easy Recycler View with Easy Adapter Library: This library gives the functionality to user to make Recycler View in single line and make Adapter in single line. Adapter has different UI functionality parameters. Github: https://github.com/therajanmaurya/WpApiUi There are many other projects you can find on my Github Repository: https://github.com/therajanmaurya
  • 2. Project idea and goals The Mifos Android Client is currently in version 2. Recently, significant new enhancements including refactoring, implementation of material design, offline, surveys, and new functionalities have been implemented taking it from Version 1 to Version 2. Now the app is still under development and this project aims at releasing the version 3. This will add exciting new features and significant enhancements. Some of the major additions are: Application-wide offline content availability – All the content which can be viewed in the app i.e. clients' details, loan details, past loan transactions, surveys, creating etc will be available offline. It will be stored in the phone, either in the cache or the database. Refactoring and redesigning the app – There will be many changes in the app including simple cosmetic ones such as layouts, colors, etc. There will also be functional changes such as changing how the app is navigated, menus, actions, etc. It will also including the refactoring of the codebase to make it more readable and manageable to help existing and new contributors. Implementing major new functionalities like collection sheets for savings and loans at the group and individual, staff notifications, editing clients details, and more. An important point here is that there are many features listed in the mockups document of the app which are still not implemented, so I'd like implement as many of them as possible. All of the above will be powered by the underlying APIs provided by the Mifos platform. The data will be transferred in a RESTful manner. Approach After facing these issues, I have come up with a well thought out plan. that makes your Mifos Android Project very structured and customizable. Anyone who wants to contribute to the project that can contribute just after a glance at the Mifos Mobile application manual ( I will prepare a manual with code structure ). These small steps are the crux of any good project. Here are the guidelines and draft project approach structure that I will follow. Re-organizing the app to follow a MVP standard architecture The app's codebase will be of the MVP Framework that all good applications follow, using MVP Framework the code readability becomes more suitable and readable and can be maintained for longer duration. The high-level architecture of the app will be as below:
  • 3. Source: https://github.com/ribot/android-boilerplate Once the app follows this structure, it will become much easier to maintain and make changes to it. This solves one part of the project, i.e. restructuring and refactoring the app. This will streamline the process of making changes to the flow/navigation of the app. Since, it will now be following a standard convention, the new navigation and workflow changes will seem natural to implement and also to the end-user. Additionally, the app will be updated to the latest libraries and APIs such as Retrofit 2, Dagger, etc. Offline content availability Once the above part is completed, implementing this will pretty straightforward. According to the structure in the figure, we will now have to only add a new data helper in the Model part of MVC. And the corresponding linking code needs to be only written in the Data Manager. All the other parts of app need not be changed. Increasing code coverage Right now, there is very little code coverage of the project. There are very few test cases and therefore, the reliability and quality of code is not upto mark. I am thinking of writing tests for the data layer(DB, API, Retrofit, etc.) and some of the controller layer. Although I aim to write tests for the view layer(activities and fragments) as well, they will have lower priority as they are already tried and tested by the platform. But still, I will try to cover as much as possible. As a sidenote, I am thinking of Junit as a testing framework and mockito as the mock framework. Implementing new features
  • 4. There are many features to be implemented, I will not list all of them here, it isn't necessary to do so anyway. Link to wireframes - https://mifosforge.jira.com/wiki/download/attachments/34111558/Mifos%20Android%20Mockups .pdf?version=8&modificationDate=1380225023161&api=v2 What is the schedule of this? This would be my first GsoC participation ever. Basically, I have three months to complete this project and it is enough for me to finish it with quality. I would like to divide my tasks into two phases. 1. Phase One I would primarily focus on porting current project into MVP framework with Retrofit 2.0 beta 4 And writing Test cases of current class. We should concern on the primary goals and milestones which the app demands in this phase. Week 1,2 – ● Restructuring the current codebase to follow the Model-View-Presenter architecture. ● I have already open the PR and I am working on it. ● Importantly, the Model layer will be developed for this, so that all the data sources, i.e. Retrofit(API), Database, etc. are all at one place and all the other layer can use the abstractions . Week 3, 4 – ● Upgrading to latest stable libraries, e.g. Retrofit 2, Picasso, Dagger 2 etc. ● Writing unit tests to increase code coverage. This is important we need to make sure future developments doesn't break the stable model layer. Week 5, 6 – ● Offline content availability. Once we have the abstractions of MVP in place, we just need to add a data source to the Model layer. Although not simple, but it will be straightforward as this will not require any changes in the View and Presenter library. ● More test cases will be required to test whether the caching goes well with the API. ● At this point we need to make sure that cached data + new requests doesn't hamper the user experience. 2. In phase 2 I would focus on building the additional features that I have mentioned in the proposal, feature enhancement and bug fixing. Week 7 – ● Feature addition - Implementing generate collection sheets for savings and loans for group and individual. ● Staff Notification. Week 8 - ● Add ability to edit clients' details and show detailed client information. ● Adding Client notes field (Create and Retrieve). Week 9 -
  • 5. ● Implementing Group notes (Create and Retrieve). ● Adding feature officer to do list . ● Retrieve, Apply, Approve Loan, Undo loan approval. ● Assign, Unassign Loan officer. ● Withdraw, Reject, Delete Loan Application. ● Update Loan. Week 10-11 ● Providing the application for users and mentors for testing and getting feedback ● Testing the application with different devices with different screen resolutions and identifying defects. Fine tuning for different screen resolutions if there are any defects. ● Enhancement and bug fixing according to the user feedback. ● Review by the mentors and contributors of the project. Changes according to reviews. ● Documenting code. Week 12 ● Releasing the Version -3 of the application for final evaluation. . If organization approves the features I have mentioned in the 'suggestions' section and according to the time limit I hope to develop those features too. (Probably after the 8th week) Have you submitted any patches or Source code to MIfos-X yet ?. Please provide link to the commit in the Github. Yes, I have submitted some patched and feature enhancements to the project. Here are my PRs. 1. #PR222 Merged 2. #PR235 Merged 3. #PR223 on Review 4. #PR211 on Review 5. #PR232 Currently working on this PR. Refactoring code into MVP layer architecture. So easily we can shift Retrofit 1.9 to Retrofit 2.0. when it will be completed, we only need to add data helper for offline saving data. And bind to Data Manager. All the other parts of app need not be changed. Motivation The key motivation factor for applying GSoC in first place is I am an open source enthusiast. And since Android is also based on open source, I started working on Android. As well as I also use Ubuntu(also open source), and even most of the apps on my phone are open source alternatives of famous apps. I have been always inspired by GSoC which encourages open source development. The key factor that drove me to this project is inspiration of learning freely, and specially for using Retrofit + MVP + Dagger 2. And the most important fact is that I am very much interested in developing this project as a committer and a contributor outside the GSoC also and be a part of wonderful open source community. Because I love to have something to admire which others can be benefited through my commitment! The talented people behind this project who are still eager to learn so much, inspire me. Career Goals:
  • 6. My career goals is to become expert in android and want to help the whole android community. I wants join a organization where I can work on some interesting and challenging projects. I always wants to feel challenged professionally. Why am I the right person for this task? The most important fact is that I am completely inspired by this idea. I have been working on this project and refining and adding features continuously since I found out about it while browsing through the organizations in GSoC. As I learnt more about this project, I became more and more interested in it. And I started reading the code, going through the docs so that I can contribute as much as I can. This can be verified by seeing my interaction on the repo of the project. This type of work suits me well as I have previous experience and also I am eager to keep learning more and more. And the other thing is I love anything related to Java and specially Android. Further I am a dedicated person with strong commitment. This is evident from the fact that I've already started working on the project and hope to do so even after GSoC. Have you contributed to open source projects? If so, which ?. Yes, I have contributed in the project Apache Taverna Android Application. Have you any previous experience with JavaScript/Java/Spring/Hibernate/MySQL? Yes, I have very good experience in Java. You can find my work on Github. Have you deployed and run the Mifos X Platform (https://github.com/openMF/mifos) and reference User Interface (https://gihtub.com/openMf/mifosx-communiy-apps)? Yes, I have run Mifos X platform once. I was thinking that running android-client from local API will be fast. But my system was not able to run both android studio and IntelliJ idea java simultaneously. Whats other commitments do you have this summer ? (Working on this project is a full-time job and must be your primary commitments!) This summer, I have no other commitments. Working on this project full time is my primary commitment. Have you participated in any previous GSoC programs? No. This will be my first ever GSoC experience. Are you applying to multiple organizations this year ? Yes, I have also submitted a proposal to the Apache software foundation.
  • 7. If you answered "yes" to the question, which is your first choice? my first choice is Mifos Initiative. Do I have to say any other facts? Yes. I would like to emphasize what I already mentioned earlier. I am eagerly looking forward to contribute to this project after the GSoC also as a contributor! Thank you, Have a nice day, Rajan Maurya