Features
The Piggybak gem provides basic shopping cart functionality for adding, removing, and updating items.
This gem includes one page checkout. One page checkout uses AJAX to retrieve and update shipping options and calculate tax. One page checkout also allows users to check out as registered users or as guests.
The Piggybak gem is designed as a mountable solution. It is intended to be included in an existing Ruby on Rails 3 application, which translates to more freedom in application business logic. Piggybak covers the shopping cart, checkout, receipt, and order listings views, and comes with a sleek admin interface.
Piggybak is built leveraging RailsAdmin, a tool for building sleek admin interfaces for Ruby on Rails applications. RailsAdmin combined with an MVC framework provides a user-friendly experience for managing products and orders. Payment, tax, and shipping methods are also managed via the admin interface.
End Point's years of ecommerce experience shows us that absolutely no application has the same business rules driving shipping, payment, and tax calculators. For this reason, Piggybak was built to allow for configurable and extensible calculators to process payments, and calculate shipping and tax costs.
The primary Rails application can override any views from Piggybak to provide custom display of the shopping cart, checkout, receipt, order history, or various helpers that display the cart link and cart form.
Anti-Features
As a mountable ecommerce solution, this gem chooses to not make several decisions that the primary (parent) Rails application will make. This gives complete control to business owners to build a web application off of the strong base of Ruby on Rails to meet custom business needs perfectly.
Traditional ecommerce product finding methods include product navigation and product search. In both product navigation and product search, the underlying business logic can vary significantly across ecommerce applications. As a gem, Piggybak allows for the parent Rails application to control navigation to sellable items. A method for adding an "Add to Cart" from on any page is included in the gem.
In some cases, a significant amount of time must be spent customizing search integration. In other cases, a web application may want to display multiple add to cart forms on one page. Piggybak supports both of these options and more.
SSL configuration can vary across web applications. In some cases, SSL is forced throughout the website. In other cases, SSL is required during the checkout process only. The Piggybak gem delegates the choice to the parent application.
Authorization can be a tricky thing. Which admin users should be allowed to read orders? Which admin users should be allowed to edit orders? Which users should be allowed to send email confirmations for users? Integrated with CanCan, Piggybak gives full control to the parent application for determining the rights associated with orders, products, payment methods, shipping methods, tax methods, countries and states. This opens the door for building out a custom role management and authorization system to suit the needs of the business owners.
While the Piggybak gems allows for the capability to add credits to orders, coupon and gift certificate business logic varies across ecommerce applications significantly. The Piggybak gem doesn't add bloat to the application by trying to solve every problem for coupon and gift certificate integration, but does open the door to be included as a custom business need.

