Spree Commerce

Try It Now

Why GoDaddy Chose Spree Commerce

Posted on September 02, 2014 by Nitin Pabuwal

Nitin Pabuwal is Director of Engineering, Ecommerce Platform. Nitin heads the engineering for the GoDaddy Online Store platform that enables small-medium businesses to easily build and manage their ecommerce sites.

Around the middle of last year, GoDaddy embarked on a journey to offer the simplest and easiest ecommerce solution for small businesses, and selected Spree to be the underlying platform for what we now call GoDaddy Online Store. In the process, we evaluated various platforms and Spree outshined the lot of them based on the criteria we considered, such as maturity, extensibility, features, modularity, adoption, community support and more.

The move to use Spree was also highly aligned with the new direction GoDaddy is taking in embracing and contributing to the open source community. For more on GoDaddy’s commitment to the open source community check out GoDaddy’s OpenStack sponsorship.

Fast forward one year and we have a simple-to-use solution that enables non-tech-savvy small businesses to easily build, manage and operate e-commerce stores. We are currently in public beta with over 3,000 stores already built on Online Store. By building this platform, we made Spree multi-tenant, integrated it with various GoDaddy systems and partners, deployed it in a PCI-compliant environment, and built an awesome customer experience on top of it. We’ve also made a series of performance optimizations, feature enhancements and quality improvements, and contributed them back to the open source project so that the larger community can benefit from them. Some examples of each include:

Performance optimizations

• Reduced time to transition from address to payment state during checkout from 1 minute and 15 seconds to two seconds (a 37X improvement) in development mode (#4676)
• Fixed n+1 query performance issue with tax rates/zones that was causing the checkout transition from address to payment state to run extremely slow (#4579)
• Made image duplication optional when a product is cloned, as otherwise products with a large number of images take a very long time to clone (#4711)
• Improved speed of product read APIs by 8x for a product with 1000 variants (#5008)
• Reduced the number of cascading touches and unnecessary DB roundtrips when saving a product, as it took a very long time if the product had many variants (#5009, #5049)

Feature enhancements

• Built an extension to add a weight-based shipping calculator that determines shipping cost, based on the total weight of items included in an order (godaddy/spree_weight_based_shipping_calculator)
• Added support for granular inventory tracking at the variant level so that it’s not just a site-wide setting (#3974)
• Added ability to view individual variants through API and image variation URLs to the details (#4336)

Quality improvements

• Fixed a stock item inventory issue due to the fact that an order with a deleted product could not be cancelled (#4652)
• Fixed an issue to handle associated adjustments when a tax rate or promotion is deleted (#4828)
• Made changes to calculate total tax correctly based on the item type (order or line item), as tax adjustments are stored differently in each case (#4830)
• Made changes to destroy associated adjustments when an order is moved out of taxable zones (#4840)
• Made changes to transactional behavior of Paranoia, a gem heavily used within Spree, to ensure failed cascading data operations do not leave a model in an inconsistent state (Paranoia #148)

We’re just getting started. We aim to create an awesome solution for our customers and there is plenty of innovation ahead of us. We also have many challenges to tackle in order to achieve a supreme level of scalability, quality, performance, security and simplicity. All of these will push us to enhance and improve the Spree platform in many ways.

We look forward to working with the open source community in the process and contributing back as much as we can. We plan on continuing our path of making robust performance optimizations, feature enhancements and quality improvements to the core Spree platform.

In addition, we’ll also build various Spree extensions that will provide rich functionalities. These functionalities include a media gallery to better manage images and videos used across the store, a simpler way to create a shop on Facebook that is always in sync with a Spree store, an elegant way of managing ratings and reviews on the store, a framework to add custom scripts as plugins to the product pages, and more.

We also plan to share our knowledge on things that are fairly unique to us, like how to make Spree multi-tenant, and how to support different themes for storefronts. We already started doing this with a Meetup we recently hosted, and there is a lot more to come.

We’re extremely excited to be part of the community and can’t wait to actively contribute to the evolution of the Spree platform.

Follow Spree Commerce!