Professional Documents
Culture Documents
Internship Report On
Android Developer of ‘LenDenClub’ At Code Himalaya
Submitted To:
Department of Humanities and Social Science
Samriddhi College
Lokanthali, Bhaktapur, Nepal
Submitted By:
Sujit Ghimire
TU Exam Roll No: 1113-51-22-00026
TU Registration No: 6-2-1113-78-2018
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
CHAPTER 1: Introduction 1
1.1 Introduction................................................................................................................1
1.3 Objectives...................................................................................................................2
4
3.2 Literature Review.......................................................................................................8
5.1 Conclusion................................................................................................................22
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
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.
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.
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
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
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)
8
maintainability of the code and also remove the interdependencies between the
activities.
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
d
2 n
9
Table 4.3 Weekly Log : 3rdWeek
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 26 Friday Building the apk with improved VAPT score and
sending to the QA team for further testing
10
Date Day Topic Covered/Worked On
h
5t
We 11
ek
Table 4.7 Weekly Log : 7thWeek
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
12
Table 4.9 Weekly Log : 9thWeek
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
13
Oct 14 Friday Fixing the error in the new codebase and code review
with supervisor
Oct 21 Friday Fixing error caused after obfuscating the code and
discussion with senior for solving the problem
14
Studying about the missed call banking and
requirement of the in-house project from the senior
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.
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.
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.
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.
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.
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.
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.
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.
22
Figure: 4.6 Enabling Minification
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.
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.
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
26
Appendices