Last year, I had to select and integrate an e-commerce software for the website CigarHit selling electronic cigarettes. Considering that the last e-commerce integration I made dated from 2005, I took a day to google, compare, download and analyze various solutions.

First, let’s start by describing my process. I was looking for an open source solution. The language was no so important, even if I had preferences. Thus PHP was my favorite. There is nothing to change in my server settings, I perfectly control this environment and language and performances are not so important. It is anticipated that a few solutions might be written in Ruby. Here as well, the server is ready to host such an application but I know in advance that configuration will give me a few hours of a headache. I am familiar with the language while not pretending to be an expert and I anticipate problem and each updates. I would rather avoid Python, being not completely familiar with its environment and syntax and having suffered from troubling installations with previous solutions. I wont speak a bout Perl, not being a masochist. Of course, there are a few over ingenered and meta specified choices written in Java but I’m developing allergies. After all, why make software simple when it could be hard. Are left a few languages like Lua, Erlang, Go and others for which I’m not against.

And so I googled and googled and after a first selection round, about ten software were downloaded. I must say I wasn’t a segregationist. Those old dinosaurs, such as osCommerce which make me loose patiente in 2002, have been downloaded again et tested, just in case. In my memory, I gave the chance to 2 Java based software, bah. After all that time, about a year, my memory isn’t fresh enough to list all the downloaded software. I’ve even projected to use Typo3 associated to its e-commerce module but my needs just didn’t fit such a time-consuming solution. At the end of the process, two solutions strike my interest. The first one was Spree and the second one was PrestaShop.

Spree is all about agility. It corresponds exactly to what I had in mind: a flexible model, a simple administration space, clean code and a REST service. What is the REST service so important? Because I need I will recreate the client code for the website. I lost hope in themes despite the marketing arguments. I always design the layout free of constraints and I’m not ready to limit the design due to a lack of flexibility in the theme mechanism. With the REST service, it was possible to keep separated the e-commerce platform from its display which could be written in Node.js with all its goodies (Jade, Stylus and more). It would have taken less than 4 days to be up and running with a clean separation between my customization and my logic. However, Spree at the time was still in its infancy and couldn’t manage product variation. For example, a e-cigarette ego pack may be sold in various colors and an Halo e-liquid exists in different size and nicotine level which impact prices and stocks. So Spree it was, Presta it will be.

PrestaShop is among all one of the most accomplished in term of feature. All the functionalities I needed or might needed were present. Integration with multiple payment gateways is summarized to a simple configuration step. Being patriotic, the development team is based in France. The Smarty templating system is not crazy but provides flexibility. It is distributed in a raw form or in a useful demo mode, loading with common extensions. The problem, as anticipated, was the time it took me to personalize its theme. Templates are great when the code is modern, simple and smart. They weren’t made of tables, not so bad, and they even used CSS. However it would have been better to me if something like Less or Stylus was used for CSS. A simple usage of HTML5 would have been nice. For example, the source code of CigarHit reveal <header> and <footer> tags while remaining compatible with IE6. Diving into the HTML source code, tags are not always making sense and a parent tag holding each template would have proved to be useful. Also, class and id attributes are not consistently named.

To finalize, PrestaShop provides us with all the functionalities need for CigarHit. We may say it has been a success. However, graphic integration was longer than necessary and any update is disregarded as synonym to several working days to meticulously compare each and every line.