What's your Stack? Why?

Katie Te Nahu Owen By Katie Te Nahu Owen

First, a caveat

At Transformative, we are fundamentally a technology-agnostic organisation. Rather, we prefer the opportunity and the needs of users to drive appropriate user-centered design, which then indicates our selection of technology. We don’t carry a bias for a pre-set toolkit that may or may not be appropriate for the engagement.

We’ve never taken money from vendors to sell their technology to our clients as it’s important to us to be able to choose the best tools for the project.

That having been said, there are some common technologies that we frequently find to be the best fit for a project. Of course these change over time as new technologies are created and the needs of our customers evolve, and we always make technology selection decisions in collaboration with our clients. Here’s an insight into what we frequently use and recommend.

Back end development

We recommend building RESTful web APIs, typically with the PHP framework Laravel. Laravel is a popular MVC (Model-View-Controller) framework with PHP developers as it takes the pain out of development by simplifying common tasks used in the majority of web projects, such as authentication, routing, sessions, and caching.

We frequently use MySQL or PostgreSQL for databases, along with the Eloquent ORM (Object-Relational Mapping) tool included with Laravel. Eloquent provides a simple ActiveRecord implementation for working with databases. Each database table has a corresponding "Model" which is used to interact with that table, and Laravel’s query builder provides a convenient, fluent interface to creating and running database queries.

Initially released in 2011, Laravel is well supported by both the Laravel community and development team. It is usually not difficult to find service providers and individual developers with Laravel experience in New Zealand. For LTS (Long Term Support) releases, such as Laravel 5.5, bug fixes are provided for two years and security fixes are provided for three years. These releases provide the longest window of support and maintenance among tools in this category. For the more frequent general releases, bug fixes are provided for six months and security fixes are provided for one year.

Transformative has developed numerous large and complex applications with Laravel over the past five years. For example, we’ve built and successfully implemented Virtual Annual General Meeting software for Link Market Services and a Superannuation and Wage Protection Platform for the Cook Islands.

Front end development

As you might expect from a digital solution development organisation, we have amassed experience over the years with a number of front-end Javascript frameworks and libraries. For a long period, we (along with many others), have used both AngularJS and React with great success. Currently, however, our preference for developing both public facing and internal user interfaces is the newer, more flexible and feature-rich Vue.js. While Vue has a great deal of similarity with React, we often describe Vue as taking the best from both AngularJS and React and adding it’s own flavour. Given this, along with Vue’s easy learning curve, it’s relatively straightforward for a React developer to work on a Vue project and vice versa. In addition to this, Vue has greater flexibility, more optimal performance, and a rich ecosystem.

Vue is a progressive framework for building user interfaces. Unlike other monolithic frameworks, Vue is designed from the ground up to be incrementally adaptable. The core library is focused on the view layer only, and is easy to pick up and integrate with other libraries or existing projects. On the other hand, Vue is also perfectly capable of powering sophisticated Single-Page Applications when used in combination with modern tooling and supporting libraries.

Despite being the recommended front-end framework for many popular back-end frameworks such as Laravel and Drupal, Vue was less commonly used in New Zealand until recently. These days it is being used as the front-end framework of choice for many products and start ups, making it much easier to find developers with previous Vue experience.

Initially released in 2014, we have now been working with Vue since 2016, and we are actively supporting it on projects for clients such as Nikko Asset Management, Auckland Council, the Cook Islands and AMLHub.

Mobile and desktop applications

At Transformative, we try to take a “mobile first” point of view, wherever possible. Most applications - even employee-facing internal systems - frequently benefit from mobile accessibility. For simplicity, as well as for positive budget impact, our philosophy is to leverage a single code base for the mobile and desktop versions of the application as often as possible.

To accomplish this objective, when developing native mobile and tablet applications, as well as PWAs (Progressive Web Applications), we also use Vue.js - and we combine that with the use of a cross-purpose native runtime for native apps. Our current favorite for this task is Capacitor. A cross-purpose native runtime tool makes building applications quick and painless while maintaining a single codebase, as opposed to one for each operating system. Capacitor is part of the Ionic framework, which we’ve utilised in the past, but have found that using Capacitor with Vue.js is a much better fit for most of our projects, as many of our projects require us to create both web based and mobile applications.

Similarly, we use this approach when creating desktop applications. Electron is currently our cross-platform native framework of choice when developing these, particularly when we’re creating both a web based application and desktop application for a project.

Ionic was initially released in 2014 and we’ve been using it to build production applications since 2015. We’ve been using Capacitor to develop production applications since it was in beta in 2018. We’ve worked with Electron since 2018, after it was introduced in 2013 as Atom Shell, before changing names to Electron in 2015.

Websites

Like the organisations they represent, websites range greatly in their complexity and purpose. The term “website” can describe anything from a single-page website with infrequently-changing information to a complex, multi-functional web-based platform including commerce, forums, and constant content updates. Transformative is a (nearly) ten year-old company, whose founders have been with us from the start. Over those ten years, we’ve evolved from a web-centric software design and development company to our current form as a broadly-based Digital Solutions Provider. Along the way, our brand was relaunched to reflect that evolution. Transformative began as Webscope, whose name pointed more to our web-centric roots. We feel our current brand more accurately represents us - Transformative is our name, and it’s also what we do.

There are numerous no-code or low-code solutions for simple websites, including staples like SquareSpace, GoDaddy, Wix, and Xara. At Transformative, we aren’t often called to use these tools, as they’re meant for quick simple solutions to be developed by the organisations themselves.

For more complex websites with more frequent content update requirements, we employ CMS (Content Management Systems), and when we use a CMS, we often use Drupal. Our website developers have been using Drupal for over eleven years - longer than Transformative has been in existence! In fact, in the early days of Transformative, we worked exclusively with Drupal. To find out more about Drupal and why we use it, read our “Why Drupal?” insight.

Like us, Drupal has come a long way since then. These days we use Drupal in two ways - the first is the traditional CMS with the entire website and administration running on Drupal. The second is a more modern approach, which uses Drupal as the CMS for adding and editing content, while the content itself is exposed to a Javascript front end via an API. This is commonly known as the JAM stack - Javascript (running in the browser), APIs (for dynamic content) and Markup (prebuilt and delivered via a CDN) with a headless CMS. Our own website is handled this way. Fancy, huh? You can read more about our view of the JAMStack in this article on our website.

Outside of Drupal, our website developers can work (and have worked) with almost all CMS platforms, we have developed and support websites running on Wordpress, Netlify, and many others.

eCommerce

When it comes to eCommerce, the rule of using the best tool for the job is essential. There’s a massive difference between someone who wants to sell a couple of products on their existing website and large retailers who do millions of dollars in sales a year and require the external integrations and customer support to back that up. For this reason, we have quite wide-ranging experience in many of the different eCommerce solutions available. Hosted solutions such as Shopify and BigCommerce are great for those starting out who don’t need many integrations with third party systems such as Vend, Xero, shipping providers, etc. Drupal Commerce is fantastic for those who require a bit more customisation than what hosted solutions can provide. For our customers with existing websites who want to try selling online without too much investment, Snipcart is a great option. And for those retailers who will be managing and selling tons of products or require significant customisations, Magento is perfect.

Greatfull is one of our more recent eCommerce builds, built using Drupal Commerce and integrating with Stripe for processing payments and ParcelPort for shipping.

Infrastructure

We recommend delivering application functionality in a Software as a Service, cloud-based model. We use Docker containers, both for local development as well as Dev/UAT/Staging/Production environments. We use Docker Compose and Make for provisioning and running local development environments for each project, and Helm and Terraform for provisioning environments with cloud providers such as GCP (Google Cloud Platform) and AWS (Amazon Web Services). These environments utilise Kubernetes (Google GKE or Amazon EKS) for orchestration and Istio for microservices.

We have a private Docker registry on Google Container Registry and use self-hosted Gitlab (along with Gitlab Runner) for our code repositories and Continuous Integration pipelines (running linting, code sniffers, and automated tests) and deployments.

Most often, we and our clients elect to use Google Cloud Platform. We have, though, used the same principles and workflows on AWS, most significantly for the Auckland Council and Nikko AM.

Integrating with other systems

Almost every project we work on involves integrating with third party systems, sometimes to the point where we’re primarily gluing different systems together and transforming and directing data. Whether it’s accepting payments, creating invoices, generating driving routes or verifying identities, there’s generally some external data our clients need in the product we’re creating for them, need us to export data to an existing system they use, or to utilise an external service they already use.

Transformative are not only experts when it comes to creating APIs, but also when it comes to integrating other systems and services with ours. We can integrate almost anything (though we really like it when we’re integrating a well documented REST API!). Some of the common systems and services we’ve integrated in the past include:

  • Stripe
  • Xero
  • Vend
  • ParcelPort
  • PayPal
  • DPS Payment Express/Windcave
  • Microsoft Office
  • Green ID
  • PDFTron
  • Cloudcheck
  • Bio Verify
  • RealMe
  • Google Maps
  • Auth0
  • Shopify
  • Salesforce
  • Microsoft Dynamics
  • Hubspot
  • YouTube
  • Acast
  • CarJam
  • Property Suite
  • Autocloud
  • Ubiquity
  • Sendgrid and Twilio
  • Mailchimp
  • Campaign Monitor

Technologies we use

As mentioned, we’re technology agnostic - we can work with anything and we have experience with ALL of these below (in no particular order):

  • PHP
  • Laravel
  • Drupal
  • MySQL
  • PostgreSQL
  • Javascript
  • Typescript
  • Vue.js
  • Vuex
  • Capacitor
  • Electron
  • AngularJS
  • React
  • React Native
  • Ionic
  • Cordova
  • Python
  • Chalice
  • Docker
  • Git
  • Gitlab
  • Linux
  • Bash
  • .NET Core
  • Nginx
  • Apache
  • Kubernetes
  • Terraform
  • Istio
  • GCP (Google Cloud Platform)
  • AWS (Amazon Web Services)
  • Azure
  • Pantheon
  • Digital Ocean
  • Wordpress
  • Silverstripe
  • Netlify
  • Gatsby
  • Gridsome
  • Apple App Store
  • Google Play Store
  • Microsoft Store
  • Shopify
  • BigCommerce
  • Magento
  • SnipCart
  • PHPUnit
  • TestCafe
  • Jest
  • Browerstack
  • OWASP Zed Attack Proxy
  • Postman
  • Swagger
  • Redis
  • Supervisor
  • Prometheus
  • New Relic
  • Sentry
  • Uptime Robot
  • Cloudflare
  • Contentful
  • Lando
  • Platform.sh
  • PDFTron
  • Envoyer
  • Laravel Forge
  • Cypress
  • Quasar

We hope this has been a useful source of information for your research. Whether you’re seeking advice or a supplier for your current project, or are simply kicking the tyres, we’d love to connect with you and know more about your objectives.

If we can be of any assistance (talking’s always free), please reach out.

Get fresh insights right in
your inbox

* indicates required