Case Study: Grandiflora
Grandiflora is a boutique florist based in Sydney, Australia. Although you might not have heard of them before, you've probably seen their work in the pages of Vogue, Harpers Bazaar and many other fashion magazines. They've also created the floral design for many celebrity weddings and events in the Australia's premier harbour city.
Recently Grandiflora were interested in updating their identity and marketing (including their website), so they tasked the team at House of Laudanum to create a custom online shopping experience to sell their products online. The previous website was a custom CMS written in Perl and while it did have some e-commerce facilities, it required updating to be a more integrated shopping solution.
Why was Drupal chosen for the project?
Although WordPress was considered early on in the decision making process, the team chose Drupal mainly because of the Ubercart module and some other contributed modules which laid the foundation for the integrated payment solution required for the project.
The other aspects of Drupal which influenced the team were:
- Drupal and the associated contributed modules are open source, and supported by an excellent developer community
- The development team were interested in developing features using a project-agnostic approach so that those features could be contributed back to the Drupal community and be more widely used.
- Ubercart and Drupal are very tightly integrated. Adding features to the shopping experience across other areas of the site was going to be important.
Custom front-end, Javascript integration
The new design for the Grandiflora website and some of the associated shopping cart experience required full control of the front-end code and a structured way to integrate front-end interactivity via Javascript. The development team's Javascript library of choice is JQuery and the way that Drupal integrates JQuery into the Drupal API meant that there was a documented and structured way to easily deliver the front-end dynamic interactivity.
Mr.Snow, the Technical Director at House of Laudanum, talks about it like this:
We were able to split development stages efficiently across different team members and have confidence that even though individual elements were being developed separately, the whole system would work together when combined. Drupal's modular and extensible nature made this possibile. Being able to have full control of the front-end and the Javascript elements of the page was crucial to the project.
Customer reminder system
The customer reminder system is a feature that allows users to create their own reminders for events that they'd like to be reminded of to send flowers at some time in the future. The system needed to be simple and users needed to be able make reminders repeatable on an annual basis (for things like anniversaries, birthdays and the like).
Peter, part of the Laudanum team and a developer relatively new to Drupal, explains:
We had prototyped the customer reminder feature on paper and at first I was concerned that we might need to alter our original wireframes to accomodate Drupal but it was the other way around. We spent a significant amount of time researching the Drupal Handbook and the Drupal API documentation site especially and it paid off in being able to implement the feature in the way we wanted. The API is deeeep! For developing custom features I recommend that people approach Drupal as a framework and forget about the out-of-the-box front-end that it supplied. I think people sometimes see the surface of Drupal and think it's a big customisable blog... the default installation is more like a framework with a 'demo' mode enabled. That demo mode is the tip of the iceberg, the API is what makes Drupal so powerful.
Deployment and development practices
The development team was heavily influenced by many of the recent advances in Drupal development practices and aggressively integrated as much Drupal configuration of the website into code. Drush was a crucial tool in the development process and formed the keystone of the deployment system as well. Deployment was handled by a custom shell script but will be updated in the future to use Drush make.
Contributed modules that made it possible
The heavy lifting for the website is done by the killer combination of CCK, Views and Ubercart. We would estimate that 80% of the project got built by configuring these modules, applying some theming and using hook_form_alter to modify UI and behaviour of certain form elements. The last 20% of the project was a little trickier and required some custom modules. Part of the challenge was interacting with the Drupal API in an elegant and "best practice" way. We've started collecting techniques and snippets of code from the Drupal handbooks and from around the web so that we can keep rolling this knowledge into subsequent Drupal projects.
Here is the complete list of contributed projects used on the site.
- Admin
- Calendar
- CAPTCHA
- CCK
- Chaos tool suite
- Date
- Features
- FileField
- Google Analytics
- ImageAPI
- ImageCache
- ImageField
- jQuery UI
- jQuery Update
- Lightbox2
- reCAPTCHA
- Token
-
Ubercart
- Ubercart contrib modules
- UC Delivery Date
- Ubercart GST / ABN
- Ubercart MIGS Gateway
- UC Purchase Order
- Views
- Webform
- Wysiwyg
Developers and Contributors
- House of Laudanum
- Yolande Gray
Drupal version: Drupal 6.x