You are on page 1of 49

Tribhuvan University

Faculty of Humanities and Social Science

Internship Report On
Android Developer of ‘LenDenClub’ At Code Himalaya

Submitted To:
Department of Humanities and Social Science
Samriddhi College
Lokanthali, Bhaktapur, Nepal

In partial fulfillment of the requirements for Bachelor degree in Computer


Application

Submitted By:
Sujit Ghimire
TU Exam Roll No: 1113-51-22-00026
TU Registration No: 6-2-1113-78-2018

Under the Supervision of


Mr. Sudip Raj Khadka

April 2023
Mentor’s Recommendation
Supervisor’s Recommendation
I hereby recommend that this internship report prepared under my supervision by Mr.
Sujit Ghimire entitled “Internship Report On ‘LenDenClub’ At Code Himalaya” in
partial fulfillment of the requirements for the degree of Bachelor in Computer Application
of Tribhuvan University be processed for evaluation.

--------------------------
Mr. Sudip Raj Khadka
Samriddhi College
(Internship Report Supervisor)
Letter of Approval
This is to certify that this internship report prepared by Mr. Sujit Ghimire entitled
“Internship Report On ‘LenDenClub’ At Code Himalaya” in partial fulfilment of the
requirements for the degree of Bachelor in Computer Application has been well studied.
In our opinion, it is satisfactory in scope and quality as a project for the required degree.
Evaluation Committee

--------------------------- ---------------------------
Mr. Sudip Raj Khadka Mr. Sandeep Shrestha
Internship Supervisor Principal

--------------------------- ---------------------------
External Examiner Mr. Sabin Ranabhat
Tribhuvan University Mentor
DECLARATION
I hereby declare that the internship report entitled “LenDenClub”, submitted to the
Office of the Dean, Central Department of Computer Application, Tribhuvan University,
is original work done for the partial fulfillment of requirements for the Bachelor of
Computer Application (BCA) under the supervision and guidance of Mr. Sudip Raj
Khadka, Samriddhi College, Lokanthali, Bhaktapur, Nepal.

----------------------
Sujit Ghimire
TU Exam Roll No: 1113-51-22-00026
TU Registration No: 6-2-1113-78-2018

1
ACKNOWLEDGEMENT
I would like to express my sincere gratitude to Code Himalaya for giving me the
opportunity to complete my internship with them. I am thankful to Sabin Ranabhat, my
internship supervisor, for his guidance, support, and encouragement throughout my
internship, and for providing me with the necessary resources and tools to complete my
tasks.
I owe my deep gratitude to my project supervisor Sudip Raj Khadka, who took a keen
interest in my internship progress and guided me all along till the completion of the
internship by providing all the necessary information.
I would also like to thank the Mobile Department team for their support and for making
my internship experience productive and enjoyable. Their willingness to share their
knowledge and expertise with me was invaluable, and I am grateful for the opportunity to
learn from them.
Finally, I would like to thank my family and friends for their unwavering support and
encouragement throughout my internship. Their love and encouragement helped me to
stay motivated and focused throughout the internship.
Thank you all for your support and guidance.
Sincerely,
Sujit Ghimire
TU Exam Roll No: 1113-51-22-00026
TU Registration No: 6-2-1113-78-2018

2
ABSTRACT
LenDenClub is an online marketplaces connecting borrowers directly with individual
investors, without the need for traditional financial intermediaries. LenDenClub offers an
alternative to traditional bank loans with potentially lower interest rates and more flexible
repayment terms.
The problem of limited access to credit and higher borrowing costs is faced by many
individuals and small businesses in traditional lending models. With LenDenClub, it
offers
an alternative way for borrowers to access credit and for investors to earn potentially
higher
returns by connecting them directly.
Faircent is a P2P lending platform based in India. Faircent connects borrowers and
lenders
directly and offers loans at lower interest rates. Faircent aims to provide an alternative to
traditional lending models, increase financial inclusion, and facilitate access to credit for a
wider segment of the population in India.
One feature that differentiates LenDenClub from other P2P lending platforms is its
unique
credit scoring system, called the LenDenClub Score. The LenDenClub Score enables the
platform to offer loans to individuals who may not qualify for traditional bank loans,
increasing access to credit for a wider segment of the population in India.
To develop this system, several technologies were studied and understood.These include
XML for front-end designing and using Java and Kotlin for logic. Android Studio was
used as an IDE for the software development.
Keywords: peer-to-peer lending platform, creditworthy borrowers, proprietary credit
scoring algorithm

3
Table of Contents
DECLARATION i

ACKNOWLEDGEMENT ii

ABSTRACT iii

LIST OF TABLES vi

LIST OF FIGURES vii

LIST OF ABBREVIATION viii

CHAPTER 1: Introduction 1

1.1 Introduction................................................................................................................1

1.2 Problem Statement.....................................................................................................1

1.3 Objectives...................................................................................................................2

1.4 Scope and Limitation.................................................................................................2

1.5 Report Organization...................................................................................................3

CHAPTER 2: Introduction to Organisation 4

2.1 Organisation Details...................................................................................................4

2.2 Organisational Hierarchy...........................................................................................5

2.3 Working Domains of the Organization......................................................................5

2.3.1 Mobile Development...........................................................................................5

2.3.2 Web Development..............................................................................................5

2.3.3 Digital Marketing...............................................................................................6

2.3.4 Graphic Designing..............................................................................................6

2.4 Description of Intern Department Unit......................................................................6

CHAPTER 3: Background Study and Literature Review 7

3.1 Background Study......................................................................................................7

4
3.2 Literature Review.......................................................................................................8

CHAPTER 4: Internship Activities 9

4.1 Roles and Responsibilities.........................................................................................9

4.2 Weekly log.................................................................................................................9

4.3 Description of the Project Involved During Internship............................................15

4.4 Task / Activities Performed......................................................................................16

4.4.1. Firebase Cloud Messaging...............................................................................16

4.4.2. Firebase Crashlytics for bug fixing..................................................................17

4.4.3. Designed Onboarding Screen...........................................................................17

4.4.4. Code Revamp to MVVM.................................................................................18

4.4.5. Dependency Injection using Dagger Hilt.........................................................19

4.4.6. Obfuscate code using Proguard........................................................................20

CHAPTER 5: Conclusion and Learning 22

5.1 Conclusion................................................................................................................22

5.2 Learning Outcome....................................................................................................22

5.2.1 Proficiency in Java programming language......................................................22

5.2.2 Understanding of Android development environment and architecture...........23

5.2.3 Knowledge of UI design principles and Material Design guidelines................23

5.2.4 Experience in using Android SDK and third-party libraries.............................23

5.2.5 Collaboration and communication skills...........................................................23

References 24

Appendices

5
LIST OF TABLES
Table 2.1 Internship Details 6
Table 4.1 Weekly Log : 1stWeek 9
Table 4.2 Weekly Log : 2ndWeek 10
Table 4.3 Weekly Log : 3rdWeek 10
Table 4.4 Weekly Log : 4thWeek 11
Table 4.5 Weekly Log : 5thWeek 11
Table 4.6 Weekly Log : 6thWeek 12
Table 4.7 Weekly Log : 7thWeek 12
Table 4.8 Weekly Log : 8thWeek 13
Table 4.9 Weekly Log : 9thWeek 13
Table 4.10 Weekly Log : 10thWeek 14
Table 4.11 Weekly Log : 11thWeek 14
Table 4.12 Weekly Log : 12thWeek 15
Table 4.13 Tools Used 16

6
LIST OF FIGURES
Figure: 2.1 Organisation Hierarchy 5
Figure: 4.1 Registering Service in Manifest.xml 16
Figure: 4.2 Adding crashlytics in Gradle 17
Figure: 4.3 Onboarding Screen 18
Figure: 4.4 Adding viewmodel in Gradle 19
Figure: 4.5 Adding Dagger Hilt in Gradle root level 20
Figure: 4.5 Adding Dagger Hilt in Gradle 20
Figure: 4.6 Enabling Minification 21
Figure: 4.7 Disabling R8 in Gradle 21

7
LIST OF ABBREVIATION
API Application Programming Interface
CEO Chief Executive Officer
MVVM Model View ViewModel
SEO Search Engine Optimization
UI User Interface
UX User Experience

8
CHAPTER 1: Introduction
1.1 Introduction
The apprenticeship ran for three months. For the duration of those three months, mobile
development skills were sharpened. The programming was done in Android Studio where
java and kotlin was used for the logical part of the coding and XML was used to design
the GUI part. The best practices required in android development was learnt during the
internship which was implemented in the application. Version control system was also
taught by my supervisor.
After learning these important concepts the project was assigned and the codebase was
run through by a senior developer. The project i.e, LenDenClub is a leading P2P Lending
platform that provides an alternate investment opportunity to investors or lenders looking
for high returns with creditworthy borrowers looking for short-term personal loans.
Different activities of the application were worked on for solving the crashes and for
smooth user experience.
Overall, this internship provided valuable experience in mobile application development,
peer-to-peer lending platforms, and the importance of user feedback in the development
process. The resulting application has the potential to provide a valuable service to
borrowers and lenders, and to disrupt the traditional banking industry.

1.2 Problem Statement


The most valuable asset of any company is their customers so better customer experience
and less bugs and crashes must be a priority for any application. Similarly the application
should scale according to its growing user base. By enabling users to interact with their
consumers and deliver better, quicker service, it may increase customer satisfaction at all
points and enhance long-term brand loyalty.
The major problems that arise in the projects are:
i. Crashes, slow performance, and inconsistent user experience.
ii. Lack of proper documentation and good architecture for scalability.

1
1.3 Objectives
The major goal of the internship is to familiarise the IT student like myself with the
reality of how companies run and to engage in dependent analysis and the evaluation of
the situation. The internship's other goals are to experience corporate culture and get
actual job experience.
The specific objectives of participation in the internship program are:
i) Implement best practices for software development.
ii) Improve the user experience by fixing existing bugs.
iii) Refactor the codebase to improve its organisation and maintainability.

1.4 Scope and Limitation


The main purpose of the LenDenClub project is to create a bug free and better user
experience application where borrowers and lenders can perform their transactions.

Some of the scopes of this project are:


i) Allow users to lend and borrow money from other users.
ii) Providing a secure environment for the exchange of funds.

Some of the limitations of this project are:


i) The application will not be able to handle large-scale transactions due to
limitations in the payment processing system and security measures.
ii) The application will not be available in all countries due to legal and
regulatory limitations.
iii) The application will not be operable without the internet connectivity.

2
1.5 Report Organization
Chapter 1: Introduction
This section includes an introduction to the project and a list of goals. The project's
constraints and scope are also highlighted.
Chapter 2: Introduction to Organization
This section includes an introduction to the project and a list of goals. The project's
constraints and scope are also highlighted.
Chapter 3: Background study and Literature review
This section describes the background study and literature reviews.
Chapter 4: Internship Activities
It outlines every aspect of the internship activity. It comprises a description of the
project engaged in the internship and the activities carried out in it, as well as roles
and duties throughout the internship.
Chapter 5: Conclusion and Learning
The conclusion of the report and learning outcomes of the internship are discussed
here.

CHAPTER 2: Introduction to Organisation


2.1 Organisation Details

3
Code Himalaya is a software development company that provides cutting edge
engineering solutions, helping large, medium and small companies and enterprise clients
untangle complex issues that always emerge during their digital evolution journey. The
company has a team of experienced developers and designers, and has developed several
successful applications across various platforms.
The organisation comprises several departments, including marketing, sales, and
customer service. During my internship, I worked in the Android development team,
which was responsible for developing and maintaining Android applications for clients.
The team was composed of 5 developers and a team lead, who provided guidance and
mentorship throughout the internship.
Services Provided by the Organization:
i. Custom Enterprise Software Development
ii. Mobile App Development
iii. Product Design And Development
iv. Artificial Intelligence
v. Software Integration
vi. Managed IT solution
vii. Dedicated Development Team
viii. Sass Development

2.2 Organisational Hierarchy

4
Figure: 2.1 Organisation Hierarchy

The organisational hierarchy of Code Himalaya is depicted in the above diagram. The
CEO is in charge of making all significant decisions for the business. The company's
finances and even the software's quality is managed by the managing director. Senior
developers, junior developers, trainees, and interns can all be found in the
development team. The software's quality is also under the senior developer's
supervision. The senior developer mentors the junior developer, who then helps the
interns.
2.3 Working Domains of the Organization
The working domain of Code Himalaya can be categorised into different units as below:
2.3.1 Mobile Development
The company is responsible for creating and maintaining mobile applications for the
company's customers or employees. The designers & programmers deliver innovative
digital solutions to meet the client’s requirements.Their service extends from designing
and building and is also responsible for maintaining and updating existing applications to
ensure they remain compatible with new mobile devices and operating systems.
2.3.2 Web Development
The company provides highly responsive websites inspired by emerging technologies &
trends to establish a presence in the digital sphere. The creative web designers &
programmers deliver innovative digital solutions to meet the client’s requirements.Their
service extends from designing and building the frontend from scratch to providing
backend support.
2.3.3 Digital Marketing

5
The talented digital marketers involve result-driven practices & run top-performing
campaigns for SEO, Social media campaigns & more. The best digital marketing
empowers customers and makes them feel confident and smart.
2.3.4 Graphic Designing
The company provides highly effective designing to make your company recognizable in
today’s market. They focus on overall usability, ease of use and the interaction between
the user and the product.
2.4 Description of Intern Department Unit

For the effective administration and operation of the overall organisations, Code
Himalaya has its own organisational hierarchy. Interns who work on the development
team also create the system. There are some interns employed by the division. The
organisation's needs and the intern's interests are used to determine the intern's area of
responsibility. In accordance with their area of expertise, the interns are paired with
the appropriate supervisor. The training that was received at Code Himalaya as an
intern on a range of topics was appreciable. The beginning of internship started by
learning of basic introduction of MVVM, retrofit, firebase messaging, and android
development best practices as a whole. During the internship, peer-learning is
encouraged but supervisors guide and direct too. A daily stand-up call is led by the
supervisor where the interns have to give progress details on the tasks assigned. An
internship working plan is followed by the intern unit. The procedures, techniques, and
tools used to ensure that a product or service complies with the standards are included
in the internship working plan.
Table 2.1 Internship Details
Start Date August 1st 2022
End Date November 8th 2022
Position Android Developer Intern
Working Hours 9 hours a day
Office Days Monday-Friday (5 days)
Internship Period 3 months

CHAPTER 3: Background Study and Literature Review


3.1 Background Study

The way we use smartphones and other mobile devices has been changed by Android,
a well-known mobile operating system. It was created by Google and uses the Linux
kernel as its foundation. The Java programming language and the Android Software
Development Kit (SDK) may be used to create Android applications. Andy Rubin,

6
Rich Miner, and Nick Sears launched Android Inc., which is where Android was first
created. In 2008, Google unveiled the first version of Android for sale after purchasing
Android Inc. in 2005. With a market share of over 85%, Android has now developed
into one of the most widely used mobile operating systems worldwide.
The four main levels of the Android architecture are as follows. The Linux Kernel
Layer, which is the top layer, offers fundamental features including memory
management, process management, and network stack. Android's operating system is
based on the Linux kernel version 2.6. The Native Libraries Layer, the second layer,
comprises a collection of C/C++ libraries created by Google for creating Android
apps. These libraries contain the OpenGL, SSL, and SQLite databases. The Android
Runtime Layer, which comprises the Dalvik Virtual Machine (DVM) in charge of
running Android applications, is the third layer. The Dalvik Executable (DEX)
bytecode format is used by the DVM, which is designed with mobile devices in mind.
The Application Framework Layer, which offers a set of Java classes and APIs for
developing Android applications, is the last layer. Along with the essential Android
apps like the Phone, Contacts, and Browser apps, it also contains the Activity
Manager, Content Provider, and Resource Manager.(Chenhui. Wang, 2011)
The development of Android uses a wide range of techniques and technologies. The
main tool for creating Android applications is the Android Studio Integrated
Development Environment (IDE), which offers a user-friendly interface for writing,
debugging, and testing. Other frequently used tools include Gradle, a build automation
tool used for handling dependencies, and the Android Software Development Kit
(SDK), which comes with libraries, sample code, and emulators for testing on various
devices. Java and Kotlin are the two most popular programming languages for
Android development, with Kotlin growing in popularity because to its clear syntax
and little boilerplate code. In addition, a lot of developers utilise third-party tools and
frameworks like Firebase for backend services, Glide for image loading, and Retrofit
for networking.
3.2 Literature Review

The performance index is substantially greater than the real needs of the program
setup nowadays as mobile hardware development improves. More software is required
for a phone's functions. The application built using the Android SDK draws
significantly more attention as the Android operating system gains in popularity.
However, some Android applications now have clumsy user interfaces, excessive pop-
up advertising, and too few features, which annoy consumers. By cutting down the
redundant information, this article shows the application. Three different types of
applications—a Weibo client, a video player, and an audio player—are created using

7
Java and the Android SDK.(Wang. J, 2014)
Due to the restricted power, memory, and resources of an android device, one element
that must be taken into account is the performance of the android application. It is a
challenge for developers to boost performance so that programs may function at their
best. Several architectures, including MVC, MVP, and MVVM, are often employed.
Many research has compared the performance of the three designs, and it can be said
that MVC (MVP = MVVM) performs the best, although it is still uncertain which of
MVP and MVVM is superior. This research compares the effectiveness of the MVP
and MVVM architectures based on three (three) different performance metrics: CPU
utilisation, memory consumption, and execution time. According to tests, MVVM
performs better in terms of CPU utilisation and execution.(Wahyu. U, 2020)
Guidelines and peer reviews address code quality, which is crucial for software
systems' sustainability and maintainability. The Clean Code approach is one example
of a well-defined method and standard for code quality, and they are linked with
contemporary software development process models like SCRUM. However, given
the trade-off between project deadlines and software quality metrics, developers must
be motivated to put out effort. Unfortunately, there are no established theories
explaining why developers haven't adopted these methodologies and standards.
Empirical research may assist to identify the underlying issues and create remedies in
order to study factors preventing the adoption of code quality in practice. However,
there aren't many empirical investigations on this subject.(Riebisch. M, 2018)

CHAPTER 4: Internship Activities


4.1 Roles and Responsibilities
The three months internship involved various activities and tasks per the
requirement of both the organisation and the project.
As a Android Intern, following responsibilities were assigned:
i. Study and conduct research on best practices used in android development..
ii. Learn different tools like Android Studio, Postman, etc.
iii.Revamp the codebase from MVC to MVVM where openFMPP , Dashboard activities
were converted into MVVM by adding a new layer of viewmodel.
iv. Check the crashlytics report of the application and solve bugs that included null
pointer exception , fragment not attached etc.
v. Create a notification by integrating the application with firebase and handling the
notification according to the payload.
vi. Obfuscate the code using proguard so that the code will be protected and data can
be safe and also reduce the size of the application.
vii. Using Dagger Hilt for dependency injection to improve the scalability and

8
maintainability of the code and also remove the interdependencies between the
activities.

4.2 Weekly log


Table 4.1 Weekly Log : 1stWeek

Date Day Topic Covered/Worked On

Aug 1 Monday Met with team member, supervisor and and got a tour
of the office with HR
st
1
We Aug 2 Tuesday Setup the environment and different OS for official
ek works

Aug 3 Wednesday Get well acquainted with the codebase and


requirements

Aug 4 Thursday Discuss about project requirement and task expected


from me

Aug 5 Friday Session on android best practices and our approaches


to meet them

Table 4.2 Weekly Log : 2ndWeek

Date Day Topic Covered/Worked On

d
2 n

Aug 8 Monday Training on Git ,Github and Jira


We
ek
Aug 9 Tuesday Setting up the git and working with github

Aug 10 Wednesday Firebase Cloud Messaging to be setup

Aug 11 Thursday Firebase Account creation and sending test messages

Aug 12 Friday Fixing the bug of notification messages for


foreground and background in the devices

9
Table 4.3 Weekly Log : 3rdWeek

Date Day Topic Covered/Worked On

Aug 15 Monday Training on Git ,Github and Jira


3 rd

We Aug 16 Tuesday Setting up the git and working with github


ek
Aug 17 Wednesday Firebase Cloud Messaging to be setup

Aug 18 Thursday Firebase Account creation and sending test messages

Aug 19 Friday Fixing the bug of notification messages for


foreground and background in the devices

Table 4.4 Weekly Log : 4thWeek

Date Day Topic Covered/Worked On

Aug 22 Monday Studying VAPT report

4th Aug 23 Tuesday Analysing the VAPT report with context with the
W
ee codebase
k
Aug 24 Wednesday Solving the issues listed in the VAPT

Aug 25 Thursday Solving the issues listed in the VAPT

Aug 26 Friday Building the apk with improved VAPT score and
sending to the QA team for further testing

Table 4.5 Weekly Log : 5thWeek

10
Date Day Topic Covered/Worked On

Aug 29 Monday Learning crashlytics to see the bugs occurred in


different devices of different platform

Aug 30 Tuesday Solving crashlytics problem of Dashboard screen

Aug 31 Wednesday Solving null pointer exception occurred in the app

Sept 1 Thursday Solving crashlytics problem in OpenFmppp activity

Sep 2 Friday Solving crash of notification


Payload causing problem => backend issue

Table 4.6 Weekly Log : 6thWeek

Date Day Topic Covered/Worked On

Sep 5 Monday Solving crashlytics problem of refer and earn activity,


dashboard screen
th
6
Sep 6 Tuesday Learning clevertap for push notification and
We
ek implementing it in the application

Sep 7 Wednesday Implementing clevertap for activity monitoring in


various actions

Sep 8 Thursday Using clevertap to send notification and fixing errors

Sep 9 Friday Redirecting to the page according to the payload sent


by the backend

h
5t
We 11
ek
Table 4.7 Weekly Log : 7thWeek

Date Day Topic Covered/Worked On

Sep 12 Monday Onboarding screen designing according to given


figma design
7th
Wee Sep 13 Tuesday Implementing the logic for the onboarding screen
k
Sep 14 Wednesday Changing the onboarding screen message from static
to dynamically sent by backend using retrofit

Sep 15 Thursday Error in onboarding screen due to slow internet


connection causing no display and fixing the error

Sep 16 Friday Reviewing the code with supervisor and merging it


with IAM/2899 given in the jira ticket and solving
merge conflict .
Discussion with senior developer for further
enhancement

Table 4.8 Weekly Log : 8thWeek

Date Day Topic Covered/Worked On

Sep 19 Monday —------------------------

th
8 Sep 20 Tuesday Learning about code revamp using mvvm architecture
We following clean architecture
ek
Sep 21 Wednesday Reviewing other application implementing mvvm
architecture

Sep 22 Thursday Learning about dagger hilt, coroutine and kotlin flow

Sep 23 Friday Building a simple tracker app using the learnt


technologies i.e, dagger hilt, coroutine, kotlin flow
etc.

12
Table 4.9 Weekly Log : 9thWeek

Date Day Topic Covered/Worked On

Sep 26 Monday —---------------------------

Sep 27 Tuesday Replacing the shared preference with datastore .


Research on datastore.
th
9
Sep 28 Wednesday Implementing the datastore in the application and
We
ek storing the token in it

Sep 29 Thursday Discussion with senior for further activity to revamp


Dashboard activity converted from java codebase to
kotlin codebase

Sep 30 Friday Fixing the dashboard activity issues and changing the
codebase to kotlin and following the mvvm
architecture in the dashboard activity
Listing the end-point used in the dashboard activity

Table 4.10 Weekly Log : 10thWeek

Date Day Topic Covered/Worked On

Oct 10 Monday Crashlytics error on new release studying and solving


all null pointer exception

1 Oct 11 Tuesday Crashlytics error on OpenFMPP activity solving


0 th

We Oct 12 Wednesday Code revamp mvvm of OpenFMPP activity


ek
Listing the endpoint used in the activity
Changing into mvvm architecture
Using of fragment replacing activity

Oct 13 Thursday Code revamp OpenFMPP integrating the endpoint


with the new codebase of MVVM architecture

13
Oct 14 Friday Fixing the error in the new codebase and code review
with supervisor

Table 4.11 Weekly Log : 11thWeek

Date Day Topic Covered/Worked On

Oct 17 Monday Learning proguard and studying how to implement it


Separating the code that can be obfuscate with others
Discussion about proguard with seniors
11
h
t

We Oct 18 Tuesday Session on kotlin, coroutine to Java developers


ek
Oct 19 Wednesday Obfuscating the code to reduce the size and increase
the security of the code

Oct 20 Thursday Fixing the error and implementing the functionality


disturbed after obfuscating the code

Oct 21 Friday Fixing error caused after obfuscating the code and
discussion with senior for solving the problem

Table 4.12 Weekly Log : 12thWeek

Date Day Topic Covered/Worked On

Oct 31 Monday —-----------------------

1 Nov 1 Tuesday Code revamp MVVM to single activity application


2th
Implementing the nav graph in the application
We
ek
Nov 2 Wednesday Code revamp MVVM structuring the application to
single activity application in the dashboard activity
Use of the created nav graph

Nov 3 Thursday Code handover to Shristi


Setup environment for another project

Nov 4 Friday Working on Missed Call Banking

14
Studying about the missed call banking and
requirement of the in-house project from the senior

4.3 Description of the Project Involved During Internship


During the internship, the mobile application for the company was maintained by trainee
as an Android Developer at Code Himalaya. A seamless and intuitive user experience for
managing their loans and investments on the platform from their mobile devices was
provided by the application. The application's integration with the platform's existing
infrastructure was ensured by working closely with both the backend and frontend
development teams. Java, Kotlin and the Android SDK were used to build the application,
with a focus on performance and user experience. Collaboration with the UX/UI team
throughout the development process ensured the application's user-friendliness and
intuitiveness, which involved conducting user testing and incorporating feedback from
users into the design and development process. Overall, valuable experience was gained
in mobile application development, as well as the importance of collaboration and
communication in a cross-functional team environment. The resulting mobile application
has the potential to provide users with a seamless and intuitive experience for managing
their loans and investments on the platform from their mobile devices.

Table 4.13 Tools Used

Development Purpose Tools and Technology


Back-end System Development Java,Kotlin
Font-end System Development XML
Cloud Messaging & Crash Firebase
Reporting
IDE Android Studio
API testing Postman
Database Shared preference, Datastore
Version Control GitHub, GitLab

4.4 Task / Activities Performed

4.4.1. Firebase Cloud Messaging

15
During the internship at LenDenClub, the intern was responsible for implementing
Firebase Cloud Messaging (FCM) in the LenDenClub Android application. FCM is a
cross-platform messaging solution that lets you reliably send messages at no cost. Using
FCM, the intern was able to notify the LenDenClub Android client app that new email or
other data was available to sync. The intern also used FCM to send notification messages
to drive user re-engagement and retention.

To implement FCM in the LenDenClub Android application, the intern set up the FCM
SDK and added the necessary dependencies to the project. The Firebase project was
handled by the client themselves, so the intern did not need to create a new Firebase
project. Instead, the intern registered the LenDenClub app with the existing Firebase
project provided by the client

Once the SDK was set up and the app was registered, the intern used the Firebase console
to send test messages to the LenDenClub app. The intern also used the Firebase Admin
SDK to create sending logic in a trusted environment such as Cloud Functions for
Firebase.

In the LenDenClub Android app, the intern added a service that extends
FirebaseMessagingService. This service is responsible for handling incoming messages
from FCM. The FirebaseMessagingService class provides several methods that can be
overridden to handle different types of messages.

The onMessageReceived method is called when a message is received from FCM. This
method receives a RemoteMessage object that contains the data of the message. The
intern implemented this method to handle incoming data messages and perform any
necessary actions, such as displaying a notification or updating the app’s data.

The onNewToken method is called when a new registration token is generated for the
app. This can happen when the app is first installed or when the token is refreshed. The
intern implemented this method to handle token refreshes and update the app’s server
with the new token.

16
The intern also added the necessary permissions to the app’s manifest file. Once FCM
was set up in the LenDenClub Android app, it was used to send and receive messages.
The intern used FCM to send notification messages that were displayed to users or data
messages that were handled by the app’s code. The intern also used FCM to send
upstream messages from the client app back to the server.

Figure: 4.1 Registering Service in Manifest.xml

4.4.2. Firebase Crashlytics for bug fixing


During the internship at LenDenClub, the intern was responsible for implementing
Firebase Crashlytics in the LenDenClub Android application. Firebase Crashlytics is a
real-time crash reporter that helps you track, prioritize, and fix stability issues that erode
app quality.

To implement Firebase Crashlytics in the LenDenClub Android application, the intern set
up the Crashlytics SDK and added the necessary dependencies to the project. The
Firebase project was handled by the client themselves, so the intern did not need to create
a new Firebase project. Instead, the intern registered the LenDenClub app with the
existing Firebase project provided by the client.

Once the SDK was set up and the app was registered with the client’s Firebase project,
the intern used Firebase Crashlytics to monitor the app for crashes and stability issues.
The intern used the Crashlytics dashboard to view crash reports and identify issues that
needed to be fixed.

One of the issues that the intern encountered was null pointer exceptions. The intern used
Firebase Crashlytics to identify where in the code these exceptions were occurring. To

17
solve this issue, the intern implemented null checks in the code to ensure that objects
were properly initialized before being accessed. This prevented null pointer exceptions
from occurring.

Another issue that the intern encountered was fragment not attached errors. The intern
used Firebase Crashlytics to identify where in the code these errors were occurring. To
solve this issue, the intern implemented checks in the code to ensure that fragments were
properly attached before performing any actions on them. This prevented fragment not
attached errors from occurring.

By using Firebase Crashlytics and implementing these solutions, the intern was able to
quickly identify and fix stability issues in the LenDenClub Android application. This
improved the overall quality of the app and provided a better user experience for
LenDenClub’s customers.

Figure: 4.2 Adding crashlytics in Gradle

4.4.3. Designed Onboarding Screen


During the internship at LenDenClub, the intern was responsible for designing an
onboarding screen for the LenDenClub Android application. The onboarding screen is the
first screen that users see when they open the app for the first time. It provides an
introduction to the app and its features.

To design the onboarding screen, the intern used a slider to display multiple screens that
users could swipe through. Each screen contained an image and some text that introduced
a different feature of the LenDenClub app.

The intern also added a button to the onboarding screen that users could tap to continue to
the main app. The button was designed to be prominent and easy to tap, so that users
could quickly move on from the onboarding screen.

18
To fetch the data required for the onboarding screen, such as the images and text for each
slide, the intern used Retrofit. Retrofit is a type-safe HTTP client for Android that makes
it easy to consume APIs. The intern used Retrofit to make a request to the LenDenClub
API and fetch the data required for the onboarding screen.

Once the data was fetched, it was displayed in the slider on the onboarding screen. Users
could swipe through the slides to learn more about the LenDenClub app and its features.
When they were ready to continue, they could tap the button to move on to the main app.

Figure: 4.3 Onboarding Screen

4.4.4. Code Revamp to MVVM


During the internship, the intern worked on revamping code for the Android project
LendenClub from the Model-View-Controller (MVC) architecture to the Model-View-
ViewModel (MVVM) architecture. This involved several steps, including analyzing the
existing code and identifying areas that could benefit from the MVVM architecture.

19
The code was originally written in Java and the intern used Android Studio’s built-in
feature to convert the code from Java to Kotlin. This was done to take advantage of
Kotlin’s features and improve the maintainability of LendenClub’s code. The intern also
made sure that the functionality of the code did not break during this conversion process.

Activities such as OpenFMPP and the dashboard were changed from MVC to MVVM.
This involved introducing the ViewModel and Repository layers for each activity. Each
activity had its own ViewModel and Repository layer, which helped to improve the
structure and maintainability of LendenClub’s code.

For example, in LendenClub’s OpenFMPP activity, the OpenFMPPViewModel was


responsible for retrieving data from the Model and providing it to the View in a format
that could be easily displayed. It also handled user interactions by delegating actions to
LendenClub’s Model or performing necessary transformations on LendenClub’s data.
The OpenFMPPRepository acted as a single source of truth for LendenClub’s data
source, ensuring that data was consistent and up-to-date across the application.

Similarly, in LendenClub’s dashboard activity, the DashboardViewModel was


responsible for getting data for the View and acting as an intermediary between the View
and the Model. The DashboardRepository was responsible for retrieving data from
various sources (e.g., local database, remote API) and providing it to LendenClub’s
ViewModel in a consistent format.

Kotlin Flow was also used in this MVVM refactoring process to handle asynchronous
data streams. In the context of the LendenClub project, Kotlin Flow was used to improve
the handling of asynchronous data and make the code more readable and maintainable.

For example, in LendenClub’s OpenFMPP activity, the OpenFMPPViewModel used


Kotlin Flow to retrieve data from the Model and provide it to the View in a format that
could be easily displayed. This allowed for a more reactive and functional approach to
handling data, making it easier to manage and maintain.

20
Similarly, in LendenClub’s dashboard activity, the DashboardViewModel used Kotlin
Flow to handle asynchronous data streams from various sources (e.g., local database,
remote API) and provide it to LendenClub’s ViewModel in a consistent format. This
helped to ensure that LendenClub’s data was always accurate and up-to-date.

Overall, the use of Kotlin Flow in this MVVM refactoring process helped to improve the
handling of asynchronous data streams and made LendenClub’s code more readable and
maintainable.

Figure: 4.4 Adding viewmodel in Gradle

4.4.5. Dependency Injection using Dagger Hilt


During the internship, the opportunity was given to learn and implement dependency
injection in an Android application using Dagger Hilt, a popular dependency injection
framework in the Android community known for its ease of use and integration with
Android components. To implement Dagger Hilt, the dependencies required by the
application such as database connections, network requests, and shared preferences were
defined in separate modules which were then annotated with @Module and provided to
the application through a Dagger Hilt component.

One of the key benefits of Dagger Hilt is that code can be generated at compile time,
which reduces the overhead of runtime reflection. This is achieved through the use of
annotations, such as @Inject and @Module, which enable Dagger Hilt to generate the
necessary code for dependency injection. Furthermore, Dagger Hilt provides out-of-the-
box support for Android components, such as Activities and Fragments, making it easier
to integrate into existing projects.

Throughout the development process, it was found that Dagger Hilt helped improve the
modularity and maintainability of the code. By defining dependencies clearly and
providing them through a single entry point, it became easier to manage and test different

21
components of the application. Moreover, Dagger Hilt's integration with Android
components simplified the code required for dependency injection, reducing boilerplate
and improving overall productivity.

Figure: 4.5 Adding Dagger Hilt in Gradle root level

Figure: 4.5 Adding Dagger Hilt in Gradle


4.4.6. Obfuscate code using Proguard
During the work on an Android application, the task was assigned to implement ProGuard
to obfuscate and optimise the application's code. ProGuard is a tool that is commonly
used in Android development to reduce the size of the application and protect against
reverse engineering.

To implement ProGuard, the necessary configuration was first added to the application's
build.gradle file. This involved defining which classes and methods should be kept, and
which ones should be obfuscated. Additionally, ProGuard was configured to keep any
third-party libraries or frameworks that the application was using. Once the configuration
was in place, the application was then run through ProGuard during the build process.

Throughout the implementation process, several challenges were encountered, such as


ensuring that the obfuscated code did not break any functionality within the application,
and debugging issues related to ProGuard's renaming of classes and methods. However,
by carefully configuring ProGuard and testing the application thoroughly, the
implementation was successfully completed and the security and performance of the
application were improved. Overall, valuable insight was gained into the importance of
application security and optimization in Android development.

22
Figure: 4.6 Enabling Minification

Figure: 4.7 Disabling R8 in Gradle

23
CHAPTER 5: Conclusion and Learning
5.1 Conclusion
In conclusion, the development of the peer-to-peer lending platform Android application
during internship was a challenging and rewarding experience. The application was
designed to provide users with an easy-to-use interface that allows them to browse,
invest, and manage their loans on the go. The development process involved researching
the peer-to-peer lending industry, identifying user needs, and designing the application
with a focus on user experience. The application was developed using Java, Kotlin and
Android Studio, and integrated with a backend API to securely store user data.
Throughout the development process, user feedback played a crucial role in shaping the
application's functionality and usability. Features such as loan tracking and investment
management were added based on user feedback, and the application was continuously
refined to improve performance and security.
During the period of internship, the interpersonal and professional skills learnt are as
follows:
i) Real world experience.
ii) Create a passion for learning and researching.
iii) Learn and adapt with new designs in the real world.
Overall, the internship provided valuable experience in mobile application development,
as well as the peer-to-peer lending industry.

5.2 Learning Outcome


During the internship, valuable experience was gained in mobile application
development, specifically in the Android platform. Some of the skill sets that were
learned are listed below:
5.2.1 Proficiency in Java programming language
Extensive experience in using Java to develop Android applications was gained during
the internship, including learning how to write efficient and clean code that adheres to
best practices and follows Object-Oriented Programming principles.

24
5.2.2 Understanding of Android development environment and architecture
Proficiency in using Android Studio was achieved through hands-on experience during
the internship, where the official integrated development environment (IDE) for Android
app development was used. Various tools, such as the Layout Editor and the Debugger,
were learned to create and debug Android applications. A deeper understanding of the
Android architecture, including the Activity lifecycle and the use of Fragments, was also
gained.

5.2.3 Knowledge of UI design principles and Material Design guidelines


The importance of creating intuitive, visually appealing, and responsive user interfaces
was emphasised during my internship as a mobile developer. UI design principles and
Material Design guidelines were taught, allowing me to design user interfaces that
conform to Android's design language and provide a smooth user experience.

5.2.4 Experience in using Android SDK and third-party libraries


Experience in using Android Software Development Kit (SDK) was gained during the
internship, which provides a set of tools and libraries for developing Android
applications. Additionally, the process of integrating third-party libraries, such as Retrofit
for networking and Gson for JSON serialisation, was learned to streamline the
development process and enhance the functionality of applications.

5.2.5 Collaboration and communication skills


During the internship, extensive collaboration was undertaken with other developers,
designers, and project managers to create and maintain Android applications. This
experience facilitated the development of communication skills that allowed for effective
conveying of ideas and opinions, as well as receiving feedback and suggestions from
team members. This collaboration provided opportunities to learn from others, work
efficiently, and contribute to the project's success.

25
References
Bhattacharya, P., Ulanova, L., Neamtiu, I., & Koduru, S. C. (2013). An empirical
analysis of bug reports and bug fixing in open source Android apps. 2013 17th
European Conference on Software Maintenance and Reengineering.
https://doi.org/10.1109/csmr.2013.23
Chao Wang, Wei Duan, Jianzhang Ma, & Chenhui Wang. (2011). The research of
Android System Architecture and Application Programming. Proceedings of 2011
International Conference on Computer Science and Network Technology.
https://doi.org/10.1109/iccsnt.2011.6182081

Khawas, C., & Shah, P. (2018). Application of firebase in Android App Development-
A Study. International Journal of Computer Applications, 179(46), 49–53.
https://doi.org/10.5120/ijca2018917200

Ma, L., Gu, L., & Wang, J. (2014). Research and development of mobile application for
Android platform. International Journal of Multimedia and Ubiquitous
Engineering, 9(4), 187–198. https://doi.org/10.14257/ijmue.2014.9.4.20

N.Deepa, B.Prabadevi, L.B, K., & B.Deepa. (2020). An analysis on version control
systems. 2020 International Conference on Emerging Trends in Information
Technology and Engineering (Ic-ETITE). https://doi.org/10.1109/ic-
etite47903.2020.39
Rachow, P., Schroder, S., & Riebisch, M. (2018). Missing clean code acceptance and
support in practice - an empirical study. 2018 25th Australasian Software
Engineering Conference (ASWEC). https://doi.org/10.1109/aswec.2018.00026
Roth, R. (2017). User interface and user experience (UI/UX) design. Geographic
Information Science & Technology Body of Knowledge, 2017(Q2).
https://doi.org/10.22224/gistbok/2017.2.5
Wisnuadhi, B., Munawar, G., & Wahyu, U. (2020). Performance comparison of native

Android application on MVP and MVVM. Proceedings of the International


Seminar of Science and Applied Technology (ISSAT 2020).
https://doi.org/10.2991/aer.k.201221.047

26
Appendices

Figure: Splash Screen


Figure: Onboarding Screen
Figure: Permission Screen
Figure: Phone Number Screen
Figure: Dashboard Screen
Figure: Portfolio Screen
Figure: More Screen
Figure: Profile Details Screen
Figure: Refer and Earn Screen
Figure: Add Funds Screen
Figure:OpenFMPP Screen

You might also like