Our approach to constructing a fast, powerful and easy to manage data visualisation tool combining the powers of WordPress, Elasticsearch and some custom plugin magic.
Note from the author: Whilst we don’t usually delve too far into technical details in our journals, we thought we’d make an exception to help demystify an aspect of our development process – in this case how we go about selecting the most appropriate technical components for a given project.
In this article, you’ll learn more about:
- How we approach technical project delivery
- How you can harness WordPress as a part of a toolchain
Between a rock and a hard place
In addition to developing a variety of native iOS and Android apps and making use of frameworks such as Laravel to create bespoke systems, Createful is a WordPress specialist, having built a wide variety of solutions based around WordPress for over ten years.
When presented with the opportunity to develop a solution for ISEAL’s new Evidensia global sustainability platform, we reviewed a number of options, with a “pure” bespoke system based around the Laravel framework initially being the most promising. However, this ultimately felt like too much of a compromise, as we didn’t feel this approach would offer the best value for money; we’d have to extend existing middleware to add the functionality we required to the extent that a large proportion of the budget would have been focused on this, rather than on the user-facing parts of the system that mattered the most.
As such, we were stuck between a rock and a hard place – none of the obvious solutions provided the ability to create and integrate the advanced custom data visualisations and advanced search capabilities we needed whilst also providing a full range of content management capabilities.
A key requirement for the Evidensia project was to create a system that was capable of supporting a series of complex data-driven visualisations and advanced faceted search capabilities on the front-end, whilst also providing a familiar, easy to use, modern CMS system with granular user permissions and content versioning on the back-end.
After we’d looked at all the options, it became clear that we’d need to make use of a hybrid system. As such, we began to look at WordPress as the means of providing the underlying framework for this – we appreciated that there’d be obstacles we’d have to overcome to create what we’d envisioned, but this felt like the right approach to efficiently solve the problem at hand.
As WordPress’s native “key-value” style approach to data storage would have severely impaired our ability to carry out the complex SQL queries required for the front-end visualisations, the obvious choice was to supplement WordPress with an additional “traditional” SQL data store to support the visualisations. However, we also needed to perform more advanced faceted search queries across the extensive, often irregular, data set that constituted the reports that form the basis of the data on the system. As such, we further extended WordPress to add full integration with a dedicated search system to provide this capability – we selected Elasticsearch on this basis.
The final solution was therefore constructed as follows…
- WordPress was used as the CMS, hence leveraging both the client’s familiarity with the system, but also its user rights management, media library, content editing and content versioning capabilities.
- To provide a more modern “Object-Oriented” environment to aid with the integration of our custom data visualisations, we made use of the Lumberjack Open Source MVC framework.
- We specifically extended WordPress to provide…
- A custom bulk data import plug-in to seed/update the system based on spreadsheet data and a cache of PDF data files.
- A custom plug-in that made use of Advanced Custom Fields and a variety of WordPress hooks to provide a complete, fully versioned “CRUD” solution for the underlying data on the system.
- Integration with the Elasticsearch system’s underlying document store.
In the final system, both the bulk data importer and standard WordPress CRUD operations used a “write-through” approach, hence both the “visualisations” SQL database data and the Elasticsearch data were automatically updated when any content changes were carried out within WordPress.
The result is a system that’s simple to administrate and easy to content manage, as well as being very fast to use, both in terms of the visualisations on the front-end and the Elasticsearch-powered online library resource that form the backbone of the platform.
Whilst we certainly don’t agree with those who consider WordPress to be a “one size fits all” solution, when used with care and appropriately extended, it can form the cornerstone of a successful system that provides exceptional value for money, considering the wealth of features it provides.