The platform aims to become the go-to source for all those involved in the real estate market and we’re happy that our efforts will produce such an impact in the market.
We wrote this article to show you the processes we went through, along side the customer, to get this project to its current state. We hope this article will demonstrate you how we do things here at Array51 and we encourage you to give us a call to discuss your projects too. :)
After 9 months, 8.476 arrays, 3.379 Git commits, 325 pull requests, 121 documentation pages in Confluence and more than 180 pages wireframed, we proudly announce the launch of the newest real estate platform in Romania - wizmo.ro.
For eachclient, we need a good understanding of the project’s path, objectives, outcomes and future development directions.
After a sitdown with representatives from Wizmo, where we discussed the project’s particulars, functionalities, design and user experience, we started working on the wireframes - which will shape the future look of the platform.
Look & Feel
In order to better capture a user’s habits on real estate websites, we did a study of other real-estate platforms in Europe and the US. By having all the necessary elements laid down and a color scheme that can convert, we began a session of feedback, with materials going back and forth between design, marketing, development and the client.
If we were to sum up in one word what Wizmo means to us, that word would be “performance”. Everything was built with performance in mind. We used modern technologies to ensure optimal website speed and responsiveness.
For listings search accuracy and performance, we used Elasticsearch search engine, while for coding we went with PHP7, Symfony, ReactJS, ImmutableJS and Redux.
We knew right from the start that the best solution for the platform’s framework will be Symfony. Symfony provides a set of great components and best practices for PHP projects of all sizes.
PHP7 is the obvious choice, rather than PHP5, because of the speed improvement. Scalar type hinting works very well with DDD, since everything is quite strict. Wizmo code base supported 7 right from the start, which meant no library restrictions. Moreover, PHP 7 is a joy to debug.
ReactJS is used in the front-end and although Facebook advocates for Flux, we selected Redux as it offers the perfect balance for us between code quality / readability and separation of concerns.
We also use ImmutableJS and strive to write purely functional code. Redux aids us substantially with this too. Coupled with Redux we can perform cool stuff like hot-swapping and reloading components and treating application state like a series of events on a timeline we can rewind or jump into at any point.
The main challenges we faced were high scalability and the large amount of data, complex financial business logic and building a consistent REST API to be integrated by the front-end application and third parties such as CRM packages. Nonetheless, we believe we have managed to move past these, successfully.
Out of the entire project, the features we pride ourselves the most in are saved searches, the mobility score and recommended sorting.
Saved searches is the function that allows a user to save certain search parameters, of interest. Based on that with every new property listed matching that criteria, the user will receive a notification. This works with a scheduled job that runs the stored Elasticsearch queries and checks whether any listings were added / updated since the last time it ran.
Mobility score is based on the distances from different categories of points of interest in the surroundings of a listing. We get the address inserted from a user’s browser and send it to our backend for persistence. The back-end is responsible for calculating a single Mobility Score based on the overall weight of each distance value.
The purpose of Recommended sorting is to give users better search results, while real estate agencies’ qualitative listings are being showed higher in the search results. There are several factors that influence this, such as the creation date, company rating and the amount of details published for a listing.
After more than 100.000 lines of code, the end result is a user friendly website, with one-of-a-kind functionalities for the Romanian real estate market. We aided the customer in adding 40.000 property listings and we’re scheduled to triple that, in the next few months.
Of course, apart from this, there is still work to be done. We will continue to work with the customer, as he will start gathering more listings and more data will be available for him, that will require statistics & analytics on the listings and more external data integrations.
For now, we are happy and excited to be part of such an innovating project, and we’re looking forward for the things to come.