Client technology stack

Our client technology stack is our preferred set of tools for doing client work.

Concentrating on less tools means there is less for our staff to learn, and makes development and support easier and quicker.

We prefer tools that will be maintained long term. Typically this means that they have a large community around them.

We want them to be popular and well known with our clients so that it is easy for them to use them.

Technology moves on and this list is updated from time to time.

Our current choice of tools is:

  • WordPress for content management
  • CiviCRM for CRM
  • Vue for frontend development
  • Docker for infrastructure management
  • AWS SES for email delivery
  • Stripe for card payments
  • GoCardless for direct debit

We have gone to more details on associated tools and best practices for each of these tools below.

CiviCRM

TODO

SearchKit

TODO

Blacklisted extensions

We prefer not to use Dataprocessor, because it overlaps with SearchKit.

WordPress

WordPress is a globally popular content management system (CMS) that has been around for years and is under active development. It is not likely to go away any time soon.

The core functionality is very simple. While more technically sophisticated CMS exist, we think that nearly all non profit content management needs can be met by this simple model, and if you think that they can't, 'you are doing it wrong'.

There is an active community of CiviCRM users developing CiviCRM related functionality for WordPress and although there are gaps compared to Drupal, we think it makes sense to contribute to filling these gaps rather than use Drupal, which is overly complex and losing market share, especially in recent years.

There is a separate page on WordPress configuration.

Blacklisted plugins

We prefer not to use Advanced Custom Fields as this functionality is better provided by the Gutenberg editor, and advanced custom fields does not integrate nicely with CiviCRM (whereas the Gutenberg editor does).

WP Mail SMTP is no longer used. Instead we send mail directly via Sendmail (see client-wide/#46.

Standard plugins

PluginShort descriptionWhere to use it
WordFenceSuite of security tools, including 2FA.All sites
Welcome Email EditorEdit the standard notification emails sent by WordPress.All sites
User Role EditorAbility to manage users and rolesAll sites
User switchingSwitch usersAll sites
Yoast Duplicate PostDuplicate a post-
Custom loginCustomisation of login screen. Unreleased plugin created by Kurund (needs to be customised per client).All sites

If you are creating a form, it depends on the requirements of the site. If the form integrates with CiviCRM we would use CiviCRM Form Builder. Otherwise pick either (@TODO choose one rather than recommend either):

CiviCRM integration plugins

PluginShort descriptionWhere to use it
CiviCRM Admin UtilitiesBetter integration between WordPress and CiviCRMAll sites with CiviCRM
CiviCRM Member SyncSyncs CiviCRM membership status to WordPress rolesSites where access is controlled by membership status

There are two relatively new plugins that provide Gutenberg integration. We should evaluate these and contribute our improvements where required:

Docker

TODO

Add some notes on how to keeping up to date with the tech we use, e.g. subscribing to blogs like the WordPress developer blog.