When looking for a house to rent or buy, you’ve likely come across websites like realestate.com.au and domain.com.au where you can filter through options based on basic physical properties of a house. However, there’s a lot more to consider than just the number of bedrooms and bathrooms where manually computing this trade-off between properties can take hours.
Homely is a web-based application that calculates and delivers a rating on available houses in a user’s desired area based on criteria that are important to them. For example, a young family might prioritise living near a top 10 rated primary school, whereas a student would prefer to live in a area where 24/7 public transport is readily available.
This project will focus on the qualities of scalability, interoperability and extensbility (respectively):
Ensuring these three qualities are cruical so Homely can handle peak usage traffic, have correct data pulls from external APIs and be able to quickly adapt to user’s new preferences over time.
Name: Bhavya Malik
Student number: 47488407
The home page should be designed so that the user is first asked their desired location and then given the option to choose between 1-10 on 10 different criteria according to their priority. The next page should display a list or interactive map of the available properties in that area all with a generated score next to them. The user should also be able to directly go to the platform where the property was orginally posted. Further, you should be able to choose two properties and compare the photos and description of the properties side by side. The user should have the capabiltiy to go back and change their preferences wihtout having to refresh the link.
The logic of the scoring engine is out of scope for this project. We simply pass the input parameters to an OpenAI GPT and it calculates and returns the score for that individual property. The reason behind this is that to get accurate scores, we would need to use a variety of machine learning technqiues and learning how to apply them is not a focus of this course.
We can either use realestate.com.au or domain.com.au’s APIs for the house data as they have the most properties in the Australian market. For the location data, we use the Google Maps API and dependent on what criteria the developer chooses we could use online data sources for more information.
It’s important for Homely to be a well scaled application to be able to handle traffic at peak times (on the weekend or evenings). Having low latency and quick page load times are crucial in a user-facing web application such as this. One way performance can be measured is by overloading the system and analysing at what number of users response time starts to decrease. Additionally, we could find the throughput of the system by measuring how many requests can be handled per second.
Since the application heavily relies on various external APIs and data lakes, ensuring Homely consistently pulls the correct data in a format that can be recognised by the system is crucial. A way this could be measured is by caclulating the percentage of succesful API calls relative to total API calls. Since frequent syncs with the realestate.com.au database are important so users can see newly added postings, we could also measure the time taken for a new posting to be visible on Homely.
Over time, it’s likely that new criteria will come into consideration when buying or renting a property, so it’s cruical for Homely to be adaptable in adding new factors into the scoring engine. Additionally, as Homely is heavily reliant on external data, we should be able to replace these data lakes and APIs with alternatives in the case of system failures. This can be measured by how much of the codebase/modules needs to be modified in order to be compatiable with a different data provider. Further, we could also measure the amount of time taken for a developer to add another criteria into the scoring engine.
The project will be deemed functional if:
For the user-facing components (though subjective), it should be noted that the system should try to be intuitive to navigate through and easy to follow.
The project will have achieved the quality attributes if: