Commercial Brewing Industry Drupal Site: dogfish.com
Dogfish Head Craft Brewery, located in Milton, Delaware, is one of the 25 largest microbrewers in North America. Starting in 1995, Dogfish Head went from a backroom operation of three little kegs with propane burners underneath to a full-fledged brewery and bottling powerhouse. They ship and sell beer in over 30 states, are currently expanding their brewery, branching out with restaurant franchises, and continue to grow.
The Dogfish Head brand prides itself on a ‘do it yourself’, ‘off-centered’, grassroots style work ethic. When it came time for them to choose a company to build their website, they chose another ‘off-centered’ company, Inclind Inc, not too far from the brewery.
Challenge
The first site was completed by Inclind in 2005 on an in-house Coldfusion powered system. But the demand and popularity of the Dogfish Head brand fast outpaced the technology and in 2007 planning began for a new content management system. We needed the system to be scalable, modular, and able to quickly develop solutions to implement features upon request. It also needed to cater to the Dogfish Head community and allow them to submit content, participate in discussions and contribute to an interactive ‘Fish Finder’ map.
Their new CMS system would also have to support ecommerce, and integrate with Dogfish Head’s Microsoft Dynamics server, an inventory/assets management system which tracks merchandise information, among other things.
Inclind evaluated three potential solutions:
- Build another in-house Coldfusion CMS system
- Use Drupal as a base platform
- Use Joomla as a base platform
It was determined that building another in-house system would take far too much time to develop. The evaluation of Joomla did not prove that it had the ease of extensibility and reliability that we need in a web application, and Drupal did. Thus, Drupal was chosen and development began.
Why Drupal?
- PHP is cheaper to host and less resource intensive than Coldfusion, and no licensing fees apply.
- The LAMP stack is fast, efficient, and easy to work with.
- Large, competent developer community to provide assistance and solutions
- Drupal allows for easy overriding of theme elements for quick implementation of changes
- Drupal’s hook system allowed Inclind to rapidly build modules to develop custom features
- Drupal’s backend was easy to understand for the client for adding content
Design, Content & Theming
Dogfish Head wanted their site to reflect the art and print found on their labels and products, appear rough around the edges and project the style of the culture in the business. Inclind’s graphic designer worked closely with the vice president of Dogfish Head on the design for three months to bring the design ideas to life.
We used taxonomy in conjunction with Node Auto Term (NAT) module to take advantage of the menu system. We also created a custom module to work behind the scenes on a node to create the relations between taxonomy structure and the menu structure. The end result is a breadcrumb for any path that is in the menu system, which is clearer for the end user where they are in the site. When a node is created and placed in the menu, NAT picks up the path and creates the term and trees, which is fed to the menu to create the breadcrumb. Our custom module ties all that together behind the scenes, so all the user has to do is place a node in the menu. Pathauto creates friendly URLs based on the menu path to keep things clean.
Part of the website is dedicated to Q&A from users, a forum, and a community powered map. Users can register for the site, and are allowed to create content. The content is submitted and queued for approval, with exception of the forum section. Staff log into the backend and review Ask Dogfish question nodes, and choose which ones to answer. The ‘Fish Finder’ map is powered by the Location module and lets users input locations of where they bought or were served Dogfish Head beer. This helps other fans of the beer know where to find it in their area. The map itself is its own theme, so we could strip out all elements to have the map load in the entire browser window. ThemeKey module was used to change the theme based on the path of the map.
To make content creation easy for general users, we made use of a few custom modules to remove a lot of elements from the node form and auto populate the values depending on the content type. All we wanted to present to the user was the Body field, and not have them see anything they did not need to see.
Hosting
The theme is pretty graphic intensive with lots of html elements and images. With the combined application load of panels, views, menu and the theme per page, we needed to serve pages as static files to take the stress off of the server. The Boost module provided a good starting point for us to server static html files, but did not give us enough performance results that we wanted. Using Amazon S3, we offloaded all theme files to S3 and kept them in sync with the web server. We improved response times by loading from Amazon instead of loading elements from the application server. Currently we’re hosting on one 2GB server provided by Slicehost, a great hosting company who hosts all of our websites. It’s held up well and has helped reduce hosting costs versus having multiple servers and databases trying to serve up all the data necessary to power each page.
The website receives about 80,000 hits and gets 480,000 pageviews a month.
Ecommerce with Ubercart
Another issue we had to tackle was bringing in the ecommerce portion of their existing website. Before, they used two administrative interfaces to control their content and their ecommerce store. It was confusing and complicated to administrate for their staff, so the replacement needed to be easier to use and consistent with their backend. The folks at Dogfish Head also utilize Microsoft Dynamics application server for inventory management which would need to be integrated.
Microsoft Dynamics would be the master source for merchandise, SKUs, pricing and attributes. After a week, we had re-architected how products were stored in Dynamics to make it consistent and uniform so that it would be easier to bring them into Ubercart. Once that was complete, we constructed a module to automate importing from Dynamics when cron runs. It talks to Ubercart and determines what products are in the system. If there is a new product, it adds it, and based on the SKU it creates the attributes and options (color, size, etc). If the product exists, it will only update the price (if it’s different from Dynamics records). This allowed us to get the store started a lot faster than having someone bring in each product manually.
This data sync alleviated their staff from needing to administrate the products directly and maintain two sets of data. They can just make changes in the Dynamics system, and Ubercart receives the updates. All they have to do is go in and add the images and description for a product.
Dogfish Head regularly conducts brewery tours at their Milton, DE location. At the end of the tour, attendees have an opportunity to purchase Dogfish Head merch (including beer!). Inclind setup two terminals running an Ubercart point of sales system so they could checkout people right in the brewery. Using the Framework theme, it was easy to build a point and click interface for Dogfish Head.
At the end of the day, there are a handful of reports using Views that they can filter out and obtain the data they need, such as End of Day Sales and Cash vs Credit purchases.
Modules Used
Over 100 modules were used. Here are some of the crucial ones we employed:
- CCK
- Views 2
- Panels
- Ubercart
- Pathauto
- Location / Gmap
- Admin Menu
- NAT
- Webform
- Menu Block
- Boost
- Nice Menus
- Wysiwyg
- Better Formats
- ThemeKey
Custom Modules
Menu Taxonomy – Creates taxonomy tree structure based on the nodes menu placement
Dynamics Import – Imports data from Microsoft Dynamics and syncs Ubercart products
Dogfish Map – Powers the Fish Finder product map in conjunction with Location
Form Automation – Determines default values per node type if the user does not have permission to certain elements
Error – Provides better error reporting, assisted with dBug.php
CDN – Syncs local filesystem with Amazon S3 account and automates rewriting of file paths and URIs based on file existing in S3 or not and ensures file availability.
Map Views – Provides intelligent defaults for the Fish Finder map so the user does not have to perform a search before seeing the view result when they get to the page. Also provides a default result if no result is found, with a pop up notification. This prevents the map from going away if view result is 0.
Banner – Allows staff to upload images into a gallery, then embed that gallery into a block for placement. Cycles through images using cycle.js and can be clickable to a site or page.
About the Developers
Inclind Inc is a Georgetown, Delaware based web development firm specializing in PHP and Coldfusion applications, Drupal consulting, Drupal development webdesign and systems integration. For more information on how Inclind can help you, please visit www.inclind.com.
Drupal version: Drupal 6.x