Divyanshu Mahendiratta Final Report

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 35

Summer Internship Report

On
Real Estate Android Application

Summer Report submitted in partial fulfilment of the requirement for the


degree of

Bachelor of Technology
in
Computer Science and Engineering

Submitted By
Divyanshu Mahendiratta
(20415002719)
To
Computer Science and Engineering Department

MAHARAJA SUARJMAL INSTITUTE OF TECHNOLOGY


AFFILIATED TO GURU GOBIND SINGH INDRAPRASTHA
UNIVERSITY
JANAKPURI, NEW DELHI – 58
2019-2023

i
CANDIDATE’S DECLARATION

I, Divyanshu Mahendiratta, Roll No. 20415002719 B. Tech (Semester- 5th) of the


Maharaja Surajmal Institute of Technology, New Delhi hereby declare that the
Training Report entitled “ Real Estate App” is an original work and data provided in the
study is authentic to the best of my knowledge. This report has not been submitted to any
other Institute for the award of any other degree.

Divyanshu Mahendiratta
(20415002719)
Place: New Delhi
Date: 25-10-2021

ii
CERTIFICATE

This is to certify that Mr. Divyanshu Mahendiratta of Bachelor of Technology Computer


Science and Engineering, has completed Summer Training on the topic Real Estate
Android App from HowzUr App, organization as partial fulfillment of Bachelor of
Technology CSE. The summer Training report and presentation by him is genuine work done
by him and the same is being submitted for evaluation.

(Signature)

iii
ORGANISATION CERTIFICATE

iv
ACKNOWLEDGEMENT

A research work owes its success from commencement to completion, to the people in love
with researchers at various stages. Let me in this page express my gratitude to all those who
helped us in various stage of this study. First, I would like to express my sincere gratitude
indebtedness to Dr. Rinky Diwedi (HOD, Department of Computer Science and
Engineering, Maharaja Surajmal Institute of Technology, New Delhi) for allowing me to
undergo the summer training of 45 days at HowzUr App Organisation.

I am grateful to our guide for the help provided in completion of the project, which was
assigned to me. Without his friendly help and guidance, it was difficult to develop this
project.

I am also thankful to my senior mate Mr. Devrishi for his true help, inspiration and for helping
me to preparation of the final report and presentation.

Last but not least, I pay my sincere thanks and gratitude to all the team Members
for their support and for making our training valuable and fruitful.

Submitted By:
Divyanshu Mahendiratta

v
ABSTRACT

The project entitled “Real Estate Application” aimed to simplify the entire process of real
estate property business operation. The project was designed and developed in Android using
Kotlin with the core features of property posting, financial transactions and communication
channel between the agents and clients. Revisions were made for the improvement of the
system before presenting it to the clients. Results showed that the system was rated overall as
good by both the experts and the end-user, it simply means that there are still a lot of
improvement to be done but the clients were still impressed overall by the output of the
project.

Thus, further improvement and testing needs to be done to fully meet the requirements of the
business process before implementing the project online. The system is a very good
alternative to the manual process of conducting business in real estate.

The customer has the ability to view all the essentials details about the property from the
website and contact accordingly using mails, WhatsApp, call from the application itself. In
this project I will be majorly designing the UI/UX part of the project using technologies like
Kotlin , XML, and major open source android libraries. I will also handle the basic backend
portion of the application like fetching data from the database using android ROOM library.

vi
TABLE OF CONTENTS

Chapter-1. Introduction ………………………………………………………1-9


Chapter-2. Project Design ……………………………………………………10-13
Chapter-3. Implementation ……………………………………………...…...14-19
Chapter-4. Result …………………………………………………………….20-24
Chapter-5. Future Scopes ……………………………………………...…….25-26
Chapter-6. Conclusion ……………………………………………………….27
References………………………………………………..………28

vii
1. INTRODUCTION

Need –

Mobile applications are the best way to deliver efficient real estate services. Mobile
apps are sure to save, time, cost, energy, and labour. With the advent of mobile
devices, real estate services are available even on the go. Before you visit the physical
site, you can comfortably browse through estate pictures and decide if it’s worth your
time.

Mobile apps create awareness and improve digital presence. When your real
estate business using the app, you already win the half of battle in the race
because most real estate business doesn’t know the awareness of the app and
don’t have their app. The mobile app adds more revenue into the real estate
business.

The physical world realtors, generally have a location-specific reach. The online, real
estate apps, however, has no geographic constraint. Yet another benefit of real estate
apps are its commission sharing advantage. Unlike physical realtors, where multiple
individuals surround you like vultures for the commission, online apps, saving you the
hassle.

Objective –

The real estate mobile app can provide all necessary information to the end users and
offer solutions to the most obvious problems. It enables the end users to get rid of
visiting the property and save time. The user can directly communicate with the
property owners, find excellent property deals online, and go through various aspects
of a selected property with ease. Apart from this, a customized mobile app offers
many other business benefits in this field.

1
Today’s generations are flexible. Persons are becoming more addicted to their
mobile phone handsets and also find it the simplest and trustworthy method of
getting information or services. When user is looking for a house, either they
will try to contact the real estate agents or else they will search online. An
online presence gives a real direction to the real estate market and boosts the
market rapidly.

Methodology –

In this project, MVVM architecture has been followed. MVVM architecture is a


Model-View-ViewModel architecture that removes the tight coupling between each
component. Most importantly, in this architecture, the children don't have the direct
reference to the parent, they only have the reference by observables.

Figure 1.1 MVVM Architecture

2
Model: This holds the data of the application. It cannot directly talk to the View.
Generally, it’s recommended to expose the data to the ViewModel through
Observables.

View: It represents the UI of the application devoid of any Application Logic. It


observes the ViewModel.

ViewModel: It acts as a link between the Model and the View. It’s responsible for
transforming the data from the Model. It provides data streams to the View. It also
uses hooks or callbacks to update the View. It’ll ask for the data from the Model.

Figure 1.2 MVVM Architecture

A View Model object provides the data for a specific UI component, such as a
fragment or activity, and contains data-handling business logic to communicate with
the model. For example, the View Model can call other components to load the data,
and it can forward user requests to modify the data. The View Model doesn't know
about UI components, so it isn't affected by configuration changes, such as recreating
an activity when rotating the device.

3
LiveData is an observable data holder. Other components in your app can monitor
changes to objects using this holder without creating explicit and rigid dependency
paths between them. The LiveData component also respects the lifecycle state of your
app's components—such as activities, fragments, and services—and includes cleanup
logic to prevent object leaking and excessive memory consumption.

ViewModel is ideal for storing and managing UI-related data while the user is
actively using the application. It allows quick access to UI data and helps you avoid
refetching data from network or disk across rotation, window resizing, and other
commonly occurring configuration changes. To learn how to implement a
ViewModel, see the ViewModel guide.

ViewModel retains the data in memory, which means it is cheaper to retrieve than
data from the disk or the network. A ViewModel is associated with an activity (or
some other lifecycle owner) - it stays in memory during a configuration change and
the system automatically associates the ViewModel with the new activity instance
that results from the configuration change.

Figure 1.3 MVVM detailed view

4
ViewModels are automatically destroyed by the system when your user backs out of
your activity or fragment or if you call finish(), which means the state will be
cleared as the user expects in these scenarios.

Unlike saved instance state, ViewModels are destroyed during a system-initiated


process death. This is why you should use ViewModel objects in combination
with onSaveInstanceState() (or some other disk persistence), stashing identifiers
in savedInstance State to help view models reload the data after system death.

If you already have an in-memory solution in place for storing your UI state across
configuration changes, you may not need to use ViewModel.

A ViewModelScope is defined for each ViewModel in your app. Any coroutine


launched in this scope is automatically canceled if the ViewModel is cleared.
Coroutines are useful here for when you have work that needs to be done only if
the ViewModel is active.

For example, if you are computing some data for a layout, you should scope the work
to the ViewModel so that if the ViewModel is cleared, the work is canceled
automatically to avoid consuming resources.

To navigate transitions between stages of the activity lifecycle, the Activity class
provides a core set of
callbacks: onCreate(), onStart(), onResume(), onPause(), onStop(), and onDestroy().
The system invokes each of these callbacks as an activity enters a new state.

Figure 1.4 Overview

5
Figure 1.5 Lifecycle of activity

As the user begins to leave the activity, the system calls methods to dismantle the
activity. In some cases, this dismantlement is only partial; the activity still resides in
memory (such as when the user switches to another app), and can still come back to
the foreground. If the user returns to that activity, the activity resumes from where the
user left off. With a few exceptions, apps are restricted from starting activities when
running in the background.

Depending on the complexity of your activity, you probably don't need to implement
all the lifecycle methods. However, it's important that you understand each one and
implement those that ensure your app behaves the way users expect.

Notice that each component depends only on the component one level below it. For
example, activities and fragments depend only on a view model. In this example, the
repository depends on a persistent data model and a remote backend data source.

6
This design creates a consistent and pleasant user experience. Regardless of whether
the user comes back to the app several minutes after they've last closed it or several
days later, they instantly see a user's information that the app persists locally. If this
data is stale, the app's repository module starts updating the data in the background.

Software and Technologies Used –

Android Studio – Android Studio is the official Integrated Development


Environment (IDE) for Android app development, based on IntelliJ IDEA. On top of
IntelliJ's powerful code editor and developer tools, Android Studio offers even more
features that enhance your productivity when building Android apps, such as:

• A flexible Gradle-based build system

• A fast and feature-rich emulator

• A unified environment where you can develop for all Android devices

• Apply Changes to push code and resource changes to your running app without
restarting your app

• Code templates and GitHub integration to help you build common app features and
import sample code

• Lint tools to catch performance, usability, version compatibility, and other problem.

Kotlin - Kotlin is a general purpose, free, open source, statically typed “pragmatic”
programming language initially designed for the JVM (Java Virtual Machine) and
Android that combines object-oriented and functional programming features. It is
focused on interoperability, safety, clarity, and tooling support. Versions of Kotlin
targeting JavaScript ES5.1 and native code (using LLVM) for a number of processors
are in production as well.

7
XML - XML is a markup language based on Standard Generalized Markup Language
(SGML) used for defining markup languages. primary function is to create formats
for data that is used to encode information for documentation, database records,
transactions and many other types of data. XML data may be used for creating
different content types that are generated by building dissimilar types of content --
including web, print and mobile content -- that are based on the XML data. Like
Hypertext Markup Language (HTML), which is also based on the SGML standard,
XML documents are stored as American Standard Code for Information Interchange
(ASCII) files and can be edited using any text editor.

Adobe Xd – Adobe XD is a vector-based UI and UX design tool and it can be used


to design anything from smartwatch apps to fully fledged apps. Interaction design
isn’t static. A designer cannot communicate a fluid and dynamic design using pixels
alone.

A modern design process involves more than a polished finished article. Wireframing,
iteration, and behavior are all part of the collaborative decision making with UI and
UX design. Adobe XD is ideal for vector-based UI design, wireframing, interactive
design, prototyping, and hi-fidelity web/app design, for solo designers or whole
teams.

About Organisation –
HowzUr App is a software firm specializing in mobile app development,
headquartered in Pune. The firm mainly focused on in-house game development, as
well as providing services to various clients for app development, testing, etc.

Libraries Used –

Material Components for Android - Material design is a comprehensive guide for


visual, motion, and interaction design across platforms and devices. To use material
design in your Android apps, follow the guidelines defined in the material design
specification and use the new components and styles available in the material design

8
support library. This page provides an overview of the patterns and APIs you should
use. Android provides the following features to help you build material design apps:

• A material design app theme to style all your UI widgets

• Widgets for complex views such as lists and cards

• New APIs for custom shadows and animations.

Retrofit – Retrofit is a type-safe REST client for Android, Java and Kotlin developed
by Square. The library provides a powerful framework for authenticating and
interacting with APIs and sending network requests with OkHttp.

This library makes downloading JSON or XML data from a web API fairly
straightforward. Once the data is downloaded then it is parsed into a Plain Old Java
Object (POJO) which must be defined for each "resource" in the response.

Lottie - Lottie is an open-source animation library developed by Airnub. It renders


Adobe After Effects with BodyMovin. BodyMovin is an Adobe After Effects plugin
that exports animations to a JSON file. Lottie makes it easy to work with animations
without downloading heavy animation files.

It helps developers to achieve a clean UI, therefore achieving a good user experience.
Lottie is easy to use, and the files can be accessed on their website. Lottie is supported
on mobile (Android, iOS, and React Native), web, and desktop applications.

9
2. PROJECT DESIGN

On Boarding Screen–
App onboarding allows businesses to optimise a user’s first interaction with an
app. Creating an engaging first-time and positive user experience is fundamental
to app success and fostering ongoing user engagement.

Users quite often lose interest when an app is confusing and difficult to navigate.
Utilising app onboarding helps make the first-time user transition as seamless as
possible, minimising potential pain points.

Login Sign Up Screen –

Enabling a user to create an account and log in, is equipping them with security for
and control over their information. When a user can see the information they've
given you in their user profile, they understand what you're using to connect with
them. So when a user gets, for example, a promotional email, they know where it
came from. They can simply go into their settings, change their email, check and
unsubscribe from promotions.

If they want, they can also change privacy settings, update personal information,
and delete their projects and profile, leaving no question about what is hanging
around in your product . When there's no login, there's no easy way for a user to use
your product on multiple devices without starting fresh. Even if you're a simple
game app, letting people save their progress and access from different devices can
keep users habitually engaging with your product.

Main Screen –

The primary goal of developing a real estate app is to draw the attention of users and
make the buying or selling process smoother.

Of course, you don’t want just another real estate app in the stores that no one
downloads. Therefore, it’s essential to keep a tab on the latest trends and features and

10
incorporate them into your app. So, keeping in mind there are four main features in
different screens are listed below

• Home –

The property listing basic feature of the real estate app. We have to show the list of
available properties with all the necessary details in the listings.

Users who want to rent or sell their property should be able to add their listing without
any difficulty. We will need a big database since the property listing will keep
growing. There will be more users, and hence, more listings in the future, so make
sure that the database or servers are flexible enough to support the scale-up
operations. A robust database is highly crucial for any real estate app.

There are two different sections in home screen. Firstly the trending properties which
shows the trending properties, sites in the market in which customers shows more
interest. Second is the all properties section below the previous one which shows all
the properties near your area.

• Search -

A structured filtered search can greatly increase an application’s UX. Developers can
perform testing in order to determine the order of criteria that are displayed to users
and which query is more popular than others. All search functions should at least have
the following options: location, property type, price range, listing type, lot size, square
footage, the year of construction, and amenities.

Information about neighbourhoods play a significant role in any real estate app as
homebuyers will always carefully scrutinize the community that they plan to live in.
As a result, it is essential to have a map view that can give detailed information of a
listing’s surroundings. Pairing up with map APIs, users can see information about
local transit, schools, and other places of interest. With geolocation, they could see
even more details.

Users should be able to specify their criteria when viewing a map, and they should
also be able to draw an area to find listings that fit their interest. In order to gather the

11
proper information, many cities and countries have open databases. Crime rates,
demographics, housing data, and more can be retrieved from these open portals.

• Notifications –

Push notifications can considerably enhance customer experience. They're less


intrusive than other forms of user engagement and can effectively drive traffic and
help users by providing useful information. They allow your users to keep up with the
latest updates, promotions, and offers. Push notifications are a powerful marketing
technique. You must have this feature in your real estate app to succeed in the long
run.

Push notifications allow you to retain and stay on top of the customer’s mind. It is
also helpful for effectively promoting your services. Push notifications to reach out to
your prospects or send industry news every now and then. It can even notify the users
when the prices are changed or a new property is added in a specific location.

However, to reap the full benefits of push notifications, the messages need to be
personalized. You should only send relevant messages that provide value to the end-
users.

• Profile –

Users should be able to create their profiles in the app so that they can perform
different activities in the app. There should be different profiles for a different set of
users.

For example, the options dis played for the buyer’s profile will be vastly different
from the agent’s profile. A buyer will be able to access the home listings, save the
favourites, see individual listings in detail, make an inquiry, etc.

Whereas, an agent would be able to see his own listings, schedules, list of interested
buyers, number of views to individual listings, advertisement options, etc. There can
be some common factors too. The features, such as maps and messaging, can be
accessible to all the users.

12
• Property Details -

These profiles include an extensive amount of information about the property, such as
description, photos, videos, rich media, price details, value proposition,
neighbourhood information, owner details, and so on.

More than 80% of the users decide whether to buy a home or not based on the photos
and videos added.

In addition, you might also need to include the contact details of the property owner
or the agent in property profiles.

13
3. IMPLEMENTATION

• Gradle Kotlin DSL is used for setting up gradle files with buildSrc folder and
extensions.
• features and libraries folders are used to include android libraries and dynamic
feature modules
• Data module uses Retrofit and Room to provide Local and Remote data sources
• Repository provides offline and remote sources and mappers, local save, delete
and fetch functions
• View Model uses Live Data with data-binding to display LOADING, and ERROR
or SUCCESS states.

Some of the popular libraries and MVVM clean architecture used with offline-first
and offline-last with Room database and Retrofit as data source

• Kotlin - First class and official programming language for Android


development.

• Coroutines - Threads on steroids for Kotlin

• Android JetPack - Collection of libraries that help you design robust,


testable, and maintainable apps.

o LiveData - Data objects that notify views when the underlying


database changes.
o ViewModel - Stores UI-related data that isn't destroyed on UI changes.
o DataBinding - Generates a binding class for each XML layout file
present in that module and allows you to more easily write code that
interacts with views.

14
On Boarding Screen–

Figure 3.1 Code Snippet of Onboarding Screen

Figure 3.1 shows the layout of the on boarding screen or splash screen of the main
application which is displayed every time user opens the application. The xml code is
displayed above.

Login Screen –

Figure 3.2 shows the layout and main code of the login screen of the application
which features the user to login to their account and avail the services provided. The
left side shows the koltin file which has main code and right part shows the xml part.

15
Figure 3.2 Code Snippet of Login

Sign Up Screen –
Figure 3.3 shows the layout and main code of the login screen of the application
which features the user to create account and avail the services provided. The left side
shows the koltin file which has main code and right part shows the xml part.

Figure 3.3 Code Snippet of Sign Up

16
Main Screen –

Figure 3.4 Code Snippet of Main Screen

Figure 3.4 shows the layout and main code of the main of the application which has
the basic features like search, notifications and profile section.

Figure 3.5 Code Snippet of Main Screen

17
Figure 3.5 shows the layout and main code of the main of the application which has
the basic features like search, notifications and profile section.

Property Details Screen –

Figure 3.6 Code Snippet of Detail Screen

Figure 3.6 shows the main code of the property detail screen which displays all the
information about the selected property which all the specifications like number of
bedrooms, bathrooms etc.

Notifications Screen –

Figure 3.7 shows the layout xml file of the notifications screen which displays all the
notifications to the users in which he or she is interested.

18
Figure 3.7 Code Snippet of Notification

Profile Screen –
Figure 3.8 shows the layout xml file of the profile screen in which all the information
such as email, phone is displayed along with the properties in which he is requested.

Figure 3.8 Code Snippet of Profile Screen

19
4. RESULT

Splash and Welcome Screen –

Figure 4.1 Splash Screen Figure 4.2 Welcome Screen

Figure 4.1 and Figure 4.2 shows the UI of the splash screen and welcome screen also
the splash screen is made interactive to display the first look of the app to the user.

Figure 4.3 displays the landscape of the welcome screen which shows the app is also
supported in landscape mode or different sized devices like tablet etc.

20
Figure 4.3 Land Scape Mode

Login and Sign Up Screen –

Figure 4.4 Login Screen Figure 4.5 Sign Up Screen

Figure 4.4 and Figure 4.5 shows the UI of the login screen and register screen in
which users fill the credentials to create account.

21
Home Screen –

Figure 4.6 Home Screen Figure 4.7 Home Screen

Figure 4.6 and Figure 4.7 shows the UI of the main screen which has two sections
first is the popular which has listing of popular properties around the area and second
section displays all the properties of the area.

Property Details –

Figure 4.8 and Figure 4.9 shows the UI of the property details screen which has all the
specifications of the property like the number of bedrooms, bathrooms, kitchens,
gardens etc. Also has some more images included which shows the better idea of the
site.
Figure 4.10 shows the landscape view of the property details screen.

22
Figure 4.8 Property Details Figure 4.9 Property Details

Figure 4.10 Property Details Land Scape

23
Notifications and Profile –
Figure 4.4 and Figure 4.5 shows the UI of the notifications screen and the profile
screen.

Figure 4.11 Notifications Figure 4.12 Profile

24
5. FUTURE SCOPES

• Extend to the Sellers’


The app can be extended to the sellers’ point in which one can create his or her
account and post about the properties. Whereas the user faced app is only limited to
buy or rent the property. In this way the app reaches to more and more users.

The calendar might sound like a nice-to-have feature, but it’s actually very helpful for
both buyers and agents.

If buyers want to schedule an appointment with the agent or seller, they can directly
check the available dates and schedule the appointment right in the app. The calendar
will send reminders to both parties at the scheduled time.

• Maps and Virtual Tour


Not only you can show property locations, but display the data and statistics related to
the select properties too. You can find location-wise information such as crime rate,
infrastructure, nearby schools, average income, and the risk of natural disasters on
government websites.

A virtual tour or 3D walkthrough is an incredible way to give buyers a real-time feel


of the home they want to purchase. According to the report, 70% of the first-time
homebuyers believe that a 3D virtual tour to the for-sale homes is as important as an
open house.

• Property Cost Calculator


The price calculators can be a useful addition to your real estate mobile app. You can
ask developers to add a custom cost estimation feature that will give users an idea of
the total property cost.

Make sure that the calculator is detailed enough. It should allow users to estimate the
final amount based on different factors such as initial payment range, taxes, loan
interest amount, and loan repayment schedule.

25
• Analytics
Analytics is one of the most significant features of any mobile application. Whether
you want to create a real estate marketplace where users can buy, sell or rent their
properties or just an exclusive app for your business, you should know how the end-
users are interacting with your app. Analytics gives you valuable insights as to how
your app is performing and what needs to be done to improve its performance.

You can get helpful information about the users and their in-app behaviour such as the
amount of time spent on a specific screen. This data would help you make better app
decisions. To get the most out of data, you can segmented your users based on their
behaviour and add them to different marketing campaigns accordingly.

26
6. CONCLUSION

The development of this project represents one important step of my academic career
as I moved to an interesting field of development using Android. I got to enrich my
capacities of self-learning, when it comes to learning about new platforms such as
Android in a duration of less time and working with it in a real life application.
Working on this project would widen the areas in which I can work in future
internships or real jobs. On the other hand, I developed my teamwork skills as this
project was realized with the collaboration of other mates. I trained myself to be more
careful with deadlines when it comes to the diaries I had to write and show to my
supervisor every week. Being easily driven by stress, I managed to take control over
my uncertainties and work pressure, and I gained some confidence in my computer
science capacities as the final result met my expectations.

All in all, I am satisfied with this experience in terms of what I have learnt
technically, professionally and also personally, and I emphasize on thanking the
people who made this happen my supervisor and my teammate.

No doubt the real estate sector holds a lot of potential. Since it is one of the key
sectors from an investment point of view, setting up a real estate app is of great
importance. Thus, more real estate apps are showing up every day.

27
REFERENCES

[1] Android Developers Official Documentation, from https://developer.android.com/docs

[2] Guide to App Architecture, from https://developer.android.com/jetpack/guide

[3] Mindorks Website and Blogs, form https://mindorks.com/

[4] Android Blogs, from https://developer.android.com/studio/projects/android-library

28

You might also like