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!

Spree 2.3.2 Released

Posted on August 29, 2014 by Jeff Dutil


Spree has issued new 2.3.2, 2.2.5, 2.1.8, and 2.0.12 releases which are available now! These releases are primarily all focused on bug fixes.

Version 2.3.2 has also received many API improvements as well.

You can review the Github Compare for a complete list of 2.3.x changes.
You can review the Github Compare for a complete list of 2.2.x changes.
You can review the Github Compare for a complete list of 2.1.x changes.
You can review the Github Compare for a complete list of 2.0.x changes.

Other Versions of Spree

If you are using Spree versions 2.0.x and older you should consider upgrading as soon as possible. Our current Release Policy is to only maintain the latest two versions of Spree along with the current master.

Spree 2.4.x will be released in the near future, and will mean the end of official 2.0.x support.

Happy Labor Day Weekend Everyone :)

Follow Spree Commerce!

Red Badger, Spree Commerce Meetup

Posted on August 26, 2014 by Alexander Diegel

Red Badger to Host Spree Commerce Meetup in London

After a successful debut of the London Spree Commerce User Group this past May, plans were quickly set in motion for the sequel. Now, the time is here to make your arrangements and attend Red Badger’s September 3rd Meetup!

The night will start off with pizza, beer and networking at 6:30PM London time. After everyone is settled, Red Badger Sotware Engineer Joe Stanton will kick off the presentations around 7:00. After Joe’s “Use of Spree in Backend Development” discussion, Spree Commerce Developer Wes Ketchum will detail the finer points of using dashing to build a Spree dashboard. Red Badger’s Paul Skarseth and GoDynamo’s Bryan Mahoney will wrap up the night with talks on secure 3D integration and results-driven ecommerce best practices.

The partnership between Spree and Red Badger began with a Hackathon this past March. The goal of the Hackathon was to see how quickly Red Badger could build a new ecommerce storefront from scratch, using the Spree Commerce platform as the base for the storefront. Incredibly, the team on the scene was able to build the store in just two days, and Spree and Red Badger have been coordinating events ever since.

We hope to see you at the Meetup for a night of pizza, beer and collaboration. Just in case you can’t make it, the night will be streamed live, so keep an eye out for updates on how to join remotely!

Follow Spree Commerce!

Store Spree Images on AWS

Posted on August 25, 2014 by Peter Berkenbosch

How to Store Spree Images on AWS S3

A concern for some Spree users is that the backend no longer gives you the option to configure s3 for storing images. Fortunately, there is now a workaround which we’ll detail in this blog post.

The first step is to add AWS-SDK to your gemfile with this command: gem ‘aws-sdk’. Once you’ve done that, install the gem by running bundle install.

Once you’ve completed that, you’ll need to configure Spree to use s3. You can add an initializer, or just use the spree.rb intitializer, which can be found at config/initilizers/spree.rb.

It’s important to recognize that the url: “:s3_domain_url” setting is used in order to enable the DNS lookup for your images, without specifying the specific zone endpoint. You would need to use a bucket name that makes the subdomain valid. Don’t use dots if you’re planning on using the DNS lookup configuration.

About the Author

Peter is an early Spree adopter. He launched his first Spree Commerce storefront for a client back in 2008. Since then he has written a number of Spree extensions and contributed a lot to the Spree open source community. Since July, 2013 Peter has worked full time on the Spree open source stack and supports customers on the edge of Wombat and the Spree storefront code. You can access this blog in its original format on his website.

Follow Spree Commerce!