You can find a complete list of Satchmo's impressive features on the project's Web site. I'll talk about some particulars that I found invaluable in developing the Wild Rose Fibres store.
The majority of the products for sale at Wild Rose Fibres come in different shapes and sizes, so to speak. The same type of fibre can come in various colours, and may be available in different package sizes. Describing this information on a static HTML site is fairly simple, but becomes complicated when you need to represent it in an automated system.
Satchmo's Variation Manager helps automate the creation of all the combinations you might have on a single product. For example, we have "bamboo" fibre that not only comes in different package sizes, but also in a plethora of different colours. In a less sophisticated system, I might have to manually create Bamboo—Jade (2oz), Bamboo—Azure (2oz), and on and on for number of colours times number of package sizes. Instead, Satchmo shows me a list of possible combinations (based on the options I specify), I select them, and Satchmo creates them.
I still have to enter specifics for each variation (if each one has a different price or a different photo), but the beautiful thing is that after I do this, it renders automatically in the storefront in option-list, AJAX-updating glory:
Custom Payment Modules
When I began the project, I was assuming that I would be using one of the many payment gateways that Satchmo already supports. I was faced with a bit more of a challenge when my client informed me that, since she was already signing up for other services, it would be more convenient to do payment through her bank: TD.
TD uses Beanstream for payment processing, a gateway unsupported by Satchmo (at the time of this writing).
Thankfully, the Satchmo project provides good documentation for dropping in your own payment module. Because Satchmo comes with a variety of payment modules, new ones can often be modelled directly off of old ones. In my case, I found that the Google Checkout module closely resembled my Beanstream needs (I also used a bit from the Protx module).
For anyone who needs a head start on interfacing with a Beanstream shopping cart, feel free to check out my module.
PCI DSS Compliance
When you're dealing in any way with payment cards on a Web site, you need to be aware of the Payment Card Industry Data Security Standard; it's a set of requirements that credit card companies and banks require you to meet depending on how you handle customers' card information.
Satchmo is designed to be able to meet PCI DSS standards at multiple levels, depending on your needs. It can store credit card information securely using strong encryption. It's easy to switch on SSL at checkout for secure entry of payment info. Or, if you're like me and decide to avoid the PCI hassle altogether, you can ensure that no credit card info is stored and simply ship customers off to the payment gateway's server to complete payment.
The Satchmo Users group has been a great help for the times that I was stumped. Especially, I want to thank Bruce Kroeze, Chris Moffitt, and Bob Waycott for making the software what it is and for devoting so much to the community.
I could go on about shipping and product modules, the translation support, and the power available thanks to Django and Python. I think the results of Satchmo-based stores like Ooh-Ga-Boo-Ga and Live Your Passion speak for the power and flexibility of this open source solution.