I’ve recently had the pleasure of implementing a shop using Shopify for a friend. Shopify is a Canadian company that gives you a platform for developing an online store. Simply put, Shopify gives you pretty complete control over the front end of your store while maintaining all the difficult back-end parts. The store is hosted by Shopify, so aside from a domain name the subscription fee and a revenue percentage is really all you have to pay.
Shopify is built on Ruby on Rails. On signing up you get a neatly designed control panel for managing your store, and you can pick from a few already defined store themes or roll your own. The predefined themes are nice looking and a good start if you want to just customize a few things, but the platform really shines when you create your own theme from scratch: the liquid template system is easy to work with and gives you just enough power to do most things while staying relatively simple.
I wasn’t trying to make this such a gushingly positive review, but it really has been a very enjoyable process, from working with the Ruby-based Vision theme development tool to using the control panel and checking out the Apps developed around Shopify using its API. I’d say one of the few downsides is that there are of course certain limits to your data structure. Multiple levels of navigation for example, quickly gets a bit tricky. Two levels work ok with a combination of Collections and Tags but anything more than that and you’re out of luck. That said, I don’t think this is an unreasonable trade-off considering how easy it is to set up a store there.
If I were to give any tips to new developers I’d say take the time to set up the Vision database before you start. Vision comes with an example shop with various products and I found it saved me a lot of time uploading the theme for actual testing if I customized the database so it looked a bit more like the actual site, with real collections and at least some real products and attributes. The database resides in the file server/db/database.yml and the more this looks like your actual site the less time you’ll spend reuploading your theme for testing.