Professional Documents
Culture Documents
Divyanshu Mahendiratta Final Report
Divyanshu Mahendiratta Final Report
Divyanshu Mahendiratta Final Report
On
Real Estate Android Application
Bachelor of Technology
in
Computer Science and Engineering
Submitted By
Divyanshu Mahendiratta
(20415002719)
To
Computer Science and Engineering Department
i
CANDIDATE’S DECLARATION
Divyanshu Mahendiratta
(20415002719)
Place: New Delhi
Date: 25-10-2021
ii
CERTIFICATE
(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
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 –
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.
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.
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.
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.
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.
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.
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.
• 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.
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 –
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:
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.
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.
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 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
14
On Boarding 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.
16
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.
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.
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.
19
4. RESULT
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
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 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
23
Notifications and Profile –
Figure 4.4 and Figure 4.5 shows the UI of the notifications screen and the profile
screen.
24
5. FUTURE SCOPES
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.
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
28