Earth Angel Consulting banner image

full stack web development

WWOOF Worldwide

Worldwide Opportunities on Organic Farms (WWOOF) is a worldwide movement to link visitors with organic farmers, promote a cultural and educational exchange, and build a global community conscious of ecological farming and sustainability practices.  A WWOOF website incorporates WWOOFer listings, Host listings, messaging, subscriptions, a review process, and many other aspects of WWOOF administration.

Working in conjunction with with, the WWOOF Canada website was created in Drupal 6 starting in 2008, in and rebuild/ported to Drupal 7 in 2013.  in 2017, we were asked by the Federation of WWOOF Organizations to expand on the code for and create the CWP (Common WWOOF Platform) Version 1.  This was a multi-site, multi-server setup, serving the website needs of any WWOOF organization who needed a FOWO-backed web solution.  At one point there were 35 countries on two AWS servers, all running the same code base.

Version 2 of CWP has been taken on by a different team and most of these websites are no longer running the Drupal-based Version 1.  See for more about WWOOF.

Screenshot Images
Screenshot Image
Host Search Map

One of the most important functions of a WWOOF Website is to allow WWOOFers to search for Host farms.  The host search function of CWP Version 1 includes the ability to search by many different criteria (using Apache Solr indexing integration) as well as a synchronized map view of the results, implemented with Leaflet and Google Maps.

Screenshot Image
Highly Configurable Multi-Step Registration/Ecommerce flow

The Host and WWOOFer registration pages need to be configurable on a per-site basis, supporting many country-specific options, including:

  • multi-page flow, with forms and content appearing both before after the Ubercart checkout pages
  • multiple currencies and languages supported
  • ability to activate registration either before or after payment
  • handling of free memberships and "locals discounts"
  • e-commerce gateways: PayPal, Stripe, and others
Screenshot Image
Complex 'Required for Condition' / 'Soft Required' functionality

As well as the usual 'required' flags that any Drupal form would support, this system had to include a 'Required for Approval' setting, on a per-field basis, meaning that "the form is able to be saved without this value filled in; however your profile will not be 'approved' (and included in site listings) without it"   the full profile edit is a multi-page form with many fields, and both Hosts and WWOOFers won't always be able to fill in all the information at once.  this "two-tiered 'required'" setup allows the system to force the most basic fields to be filled in (these are usually filled in the initial registration form) and then the member can visit the form multiple times until they have all the 'required for approval' fields filled in too.   The fields appear with yellow asterisks, or yellow form borders if value is empty, these have similar meaning to the red color used for Required fields.