work

hausli

PHP 7JavaScriptMySQLMongoDBTwigLessGulpPHPUnitRactive.jsBackbone.jsES6BabelStripeBashKarmaMochaSinonChaiAWS S3AWS EC2AWS RDSAWS CloudWatch
color-splatter

Hausli allows property investors to forecast and manage their properties, providing investors with accurate forecasts up to 60 years into the future. Built for financial-data at-scale, Hausli excels at dealing with high volumes of computationally intensive processing. Given this, a user is encouraged to create up to 250,000 records in only a matter of minutes, allowing for extremely accurate property forecasting.

hausli artistic impression

About

The Problem

Property investors lacked a method to accurately and objectively forecast how their investments would behave into the future. The standard approach was to create an Excel spreadsheet, which simply could not map all variables affecting an investment. An approach was needed that allowed an investor to confidently predict the behaviour of an investment, without the need for prior financial knowledge.

The Brief

The brief called for an extremely flexible approach to data entry, which accommodated users of hugely varying expertise levels. A user should be able to enter all financial information associated with an investment, and be able to forecast that information into the future. The predictions must, given accurate enough input, be as accurate to real-life as possible. There should be no compromise in accuracy or detail, and the reports must offer value to both the novice and the expert property investor.

The Solution

The solution called for an extremely user-driven development process. A 'scenario' system was developed whereby a property could hold a scenario, in which all information was contained. A user may enter their information into a scenario and could later compare scenarios together. Within scenarios, a data-entry system was required to allow users to enter massive amounts of information in as little time as possible. A system for tables that could easily accommodate 30 or 60 years worth of information was developed, allowing users to enter yearly or daily financial values. Values can be easily repeated - and modified - over 60 years, making it as easy as possible for the user to enter their financial information. Given these input methods, a user can create up to 250,000 individual records for any given property, all in a matter of minutes. A system was developed to deal with the enormous volume and complexity of information, which allowed for values to be easily computed into reports with a high degree of accuracy, often to within $1 over 30 years. Using this system, a user may pay expenses, receive income, repay loans, draw down on loans, and any number of other actions. A user could, for example, determine whether they should buy-and-hold a property, or buy-renovate-and-sell.

Client-Side

The client-side application was built with Backbone, using the Ractive.js view library, with custom graph libraries. Given the large number of related components, the Mediator pattern was determined to be the best approach, whereby each component would remain stateless and unaware of other components. Mediators call actions on listeners and listeners either talk to API endpoints, effect the DOM, or return information directly to the mediator for further processing. This enabled the UI to be highly componentized and reusable.

Server-Side

Server-side, Hausli was built with PHP 7, using strict return-types. It uses the Twig templating engine and Stripe for payment processing. It uses a combination of MongoDB to handle high-read-write processing of financial records, which are dealt with largely as integers, and MySQL to handle all other data. It requires the use of pre-aggregated tables to reduce the computational load, and a significant number of custom map-reduce style algorithms to handle often hundreds-of-thousands of records at any one time. The entire Australian tax system - as it relates to investment properties - is mapped and computed in real-time to display to users. Overall, a typical page load may include the computation of several hundred-thousand records. Despite this, server processing time was kept low.

Graphs & Reports

hausli reports

Data Entry

hausli data entry

Navigation

hausli navigation