The Making Spot is an e-commerce/community site for crafters interested in a wide range of pattern-based activities, such as knitting and ‘scrap-booking’.

The site pulls together a range of content from across the Future Publishing craft portfolio of magazines, social networks and blogs. Patterns and resources are available for instant download.

The Making Spot Homepage Screenshot
Why Drupal was chosen: 

Drupal supports sophisticated e-commerce, community and e-learning functionality amongst many other things.

We have worked on Drupal with trade unions and charities, leading UK businesses and some of the world's largest corporations.

Why choose anything else?

Describe the project (goals, requirements and outcome): 

Our Challenges and Solutions:

Varied Search Patterns

The several thousands patterns and resources are presented as attractive images meaning there isn’t enough text content for accurate keyword search.

Search needs to be intuitive, accessible and powerful without resorting to an intimidating ‘Advanced Search’ interface – the site is focused on discovery and fun and caters for a wide range of users. Some of the personas we used to generate user stories:

  • Novice crafter need resources to get started.
  • Expert crafters want to discover new challenges and show off their talent.
  • All users want to be able to search for crafting activities for specific occasions, such as making Christmas gifts or clothes for newborns.

E-commerce

The site’s purchasing experience was designed to be as quick and easy as possible, almost ‘an iTunes for crafting patterns’. Users should be able purchase and download products immediately and be able to have a secure ‘wallet’ with their credit card details stored for later re-use. Because of the low cost of items, there was also a requirement for 'post-pay’ functionality so users received a manageable number of notifications and statement items. The site needed to clearly indicate to users that they weren’t buying finished products but the instructions on how to make them.

The craft landing page carousels (e.g. Card-Making) are localised for Europe, N. America via a cookie test for marketing purposes using .

Complex editorial content

Much of the how-to and article content is being automatically repurposed and imported from a range of source magazines.

Significant planning and testing of content importation was important to ensure that step by step guides such as How to create paper daisies were returned and displayed as structured data including:

  • description text
  • result image
  • variable number of steps
  • structured tags
  • reference source (ie Future Publishing title)

Variance in content source meant that design needed to respond intelligently. Content types were modelled on data types, migration from a number of different sources with tens of thousands of images.

We took a representative sample of content and modelled this against requirements. We then supported content partners to treat content data, then migrate this into a suitable structured new format which we imported using the Node Import module.

Dynamic Navigation

Main site navigation are search queries rather than static pages, categories or Content Types – a tabbed design emulates content-type based searches. (see image: Search Results example)

The benefit of this is that ‘pages’ returned by the navigation bar are dynamically generated and always have the latest results – this is especially important when thousands of products can be added in a week.

As search is such a critical feature of the site, the Search box is in a prominent position in the centre of every page very close to the content right through the site.

Scenting

One-click searchability is supported by effective scenting – content is tagged in helpful ways so users can narrow their search in a number of ways and users don’t have to struggle through Boolean syntax or the dreaded ‘Advanced Search’ boxes we all love to hate.

For example, one of the How-tos is tagged by difficulty, Craft, Designer, Technique, Related patterns (from the e-commerce section and the free downloads) plus Related Help & Advice.

And products are tagged additionally by Project Type, Designer, Who the finished product is ‘for’ (eg gift, for children), Techniques used, Materials and Equipment needed.

Schema.org

All the elements of the page are marked up with schema.org vocabulary. This HTML style markup adds additional meta data to the elements of the page describing them as, for example, a product with a title and the following prices in the following currencies. This helps search engines index the content of your pages.

Here is some cut down HTML from the site describing a product in a list of products:

<ul>
   <li class="thumbnail col-5 blck" itemscope itemtype="http://schema.org/Product">
  <a href="http://dev.themakingspot.com/cross-stitch/pattern/little-angels" class="listing-title" itemprop="url">
    <span itemprop="name">Little angels</span>
  </a>
        
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
  <span itemprop="price" class="large bold">£1.49</span>
  <meta itemprop="priceCurrency" content="GBP">
</div>

<div itemprop="offers" itemscope itemtype="http://schema.org/Offer" >
  <span itemprop="price" class="large bold">$1.99</span>
  <meta itemprop="priceCurrency" content="USD">
</div>

<div itemprop="offers" itemscope itemtype="http://schema.org/Offer" >
  <span itemprop="price" class="large bold">$1.99</span>
  <meta itemprop="priceCurrency" content="AUD">
</div>

<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
  <span itemprop="price" class="large bold">€1.59</span>
  <meta itemprop="priceCurrency" content="EUR">
</div>
      </div>
    </li>
</ul>

Usability Testing

We undertook frequent Don’t Make Me Think style usability testing throughout build iterations. This was incredibly useful and meant we had actionable feedback to incorporate as we went along. This resulted in changes including the moving and re-naming of major interface elements.

Social Functionality

All the products and guides have comments with the ability to upload multiple images so the community can show off their work or collaborate on difficult problems.

A profile page allows users to see what others users are making, their wish list and comments so that users could, for example, make notes on the site and have them stored in a convenient location online.

Each page incorporates key social buttons for the site’s Community Editors' active engagement on Facebook, Flickr, Twitter, YouTube and specialist forums.

Using a Solutions Architect

One of the key decisions in the success of the project was to use one a senior developer as a solutions architect in the projects early stages to handle planning, module research and validating choices through testing.

There were also significant third party elements to integrate and test – Apache Solr, external payment gateway with post-pay and stored card functionality, two analytics, performance monitoring, bespoke ad code, memcache and multiple CDN types.

Performance

We took a relatively standard approach to performance optimisation – using latest Pressflow 6.x, memcached instead of database cache storage, switched to InnoDB instead of MyISAM.

On the front-end we used CSS/JS aggregation, CDN for static assets and we also sprited the site’s theme images to reduce the number of requests to load the page.

Block and Views (query and output) caching are used and tuned to match acceptable cache lifetimes for different features.

Technical specifications

Why these modules/theme/distribution were chosen: 

SOAP Integration

UberCart would usually be our standard choice for Drupal 6 e-commerce, but, with so much functionality being delivered off-site and the relatively rigid structure that UberCart offers, we decided to develop a bespoke module to handle external integration, site wallet and post-pay order batching.

Other factors in this decision were:

  • SOAP integration for payment and account management
  • bespoke order history
  • purchased product assets being delivered from a CDN
  • simple cart functionality being the only Drupal requirement
  • purchases available in multiple currencies

This choice also brings a purpose-built codebase with a much smaller footprint to maintain.

Cart and price data are delivered using a mixture of AJAX callbacks and cookie preferences to allow for anonymous page caching, giving users the ability to build up a basket of products before they register to checkout. We used Taxonomy to organise the thousands of products using hundreds of taxonomy terms.

Nodewords, XML Site Map, and Site Map

To support SEO best practices.

CTools module

The AJAX made use of the CTools module for Drupal and allows for a seamless experience where multiple items can be added to the basket and the currency changed without any need for a page refresh. Add to basket buttons change colour and functionality depending on whether the product is available to buy, is in the basket, or free (ie user has already bought it).

The site was set up for four currencies at launch but designed so additional currencies can be added as a simple configuration task.

SimpleTest

The bespoke e-commerce elements make extensive use of this module to provide some 400 automated unit tests ensuring code consistency and allowing confident future refactoring – in a build such as this, we needed to be certain that any last minute changes in specifications/requirements could be tested ‘on the fly’.

Apache Solr and faceted taxonomy

Feature rich and scalable search via Apache Solr) and facet driven taxonomy were key to meeting the search requirements. Version 1.x of the module was used with some extra fields indexed for performance to allow complete results to be returned without further processing.

In order to be able to show results counts for different content types (products and articles), we needed to execute two separate searches which would potentially have had a negative impact on performance. For this reason, we had to make changes to Apache Solr’s standard caching settings.

Flag

Users are able to generate a wishlist of favourites. For this we used the Flag module and set up a standard flag link.

Node Import module

Migrating and importing Content data into a structured new format.

Project team: 
  • Deeson Online
  • Contact: Tim Deeson
  • Email: timd[at-sign]deeson.co.uk
Sectors: 
Community
E-Commerce