Top Italian Villas is a real estate agency based in Milan.
Another WordPress website? Think again.
What seems like a fairly straightforward website from the outside, is a full-fledged PHP software built to manage the whole real estate business.
My client was already using a custom-built solution, managing his luxury properties catalogue, contacts and rent/sell operations. The previous app was already solid from a data architecture standpoint, but was slow, lacking flexibility and a way to easily edit content.
Before writing any code, I sat through dozens of meetings with the client to gain a deep understanding of his process. I took a modular approach, building micro-services that could be improved, scaled and connected to each other.
After a full year of work, I had perfected each module for production use.
Query for rent/sale status, location, amenities and distance from the sea. This feature is not only useful for the final user but in administration as well: being able to filter houses on very specific features and send them directly to clients.
Each property has a set of templates for PDF generation, based on its current status and available fields. For both rent and sale templates there's a confidential option, showing the exact location of the house on a map.
Google Drive / Dropbox integration
Import and export images on external cloud providers. It includes a compression option to lower the file size on the server and improve page load time.
Automatically create a label on Gmail to organize emails, based on a dynamic and customizable set of rules. Has a default template for each destination email, but can be customized on a per-object basis.
Create mailing lists and user segments on the fly, without leaving the administration back-office and enabling direct marketing with very little effort.
Rates / Booking
Baked in spreadsheet functionalities to calculate property rates based on different factors.
Greater than the sum of its parts
Building a full-stack web application from the ground up has taught me plenty, from technical skills to project management.
Here are some of the challenges I had to overcome to ship this project:
- Anticipate the client's needs: listen carefully before writing any code, plan and leave room for building new features alongside the requested ones.
- Manage multiple timelines: each module required multiple iterations, testing and in some cases external support (e.g. authentication for Gmail and Google Drive on multiple emails). Avoid getting stuck on one feature and keep moving.
- Pay attention to detail, but keep the big picture in mind: it's very easy to fall into optimization madness on a single feature, but it's fundamental to always have a clear map of the application as a whole.