Wednesday, September 24, 2008

Jump the Gun


Yesterday we went live with the first commercial customer for Suteki Shop: Jump the Gun. They’ve been selling Mod clothing from their shop in the North Laines of Brighton for 15 years. Brighton of course is the spiritual home of the Mods so the shop is a local landmark. It’s really exciting to see Suteki Shop taking real orders from the customers of such a cool business.

Of course the main technical interest with Suteki Shop is that it’s built with the MVC Framework. That’s really nice if you’re a developer since it makes building complex websites that much easier. Suteki Shop’s development mostly took place in the Spring of this year. I worked on it part time while I was also working for a contract client, but I guess total development time was in the region of six weeks. That’s pretty good for a site of Suteki Shop’s complexity. More importantly it hasn’t just been hacked, but built with a scalable component oriented architecture. I am very confident that I’ll be able to build features into the software without countering excessive scale pain.

Probably the main thing that Jump the Gun wanted from their eCommerce site was search engine discoverability. The MVC Framework gives you this by default. The site is totally dynamic but each page has it’s own URL. How about a sky blue Harrington Jacket?

… or a black Fred Perry M12 polo shirt:

It’s essential to provide these kind of URLs if you want Google to index your product catalogue.

The other way to help search engines is to provide clean HTML. The MVC Framework makes that a sinch. If you’re using Firefox (you’re not???) go to View->Page Style->No Style. Now try to use Suteki Shop. It works fine. You can view the product catalogue categories and buy stuff with no problem. Not so easy if you rely on WebForms and third party controls. It also means that Suteki Shop relies entirely on CSS for its styling. Creating a very different looking shop front should be a simple job for a good designer.

The next thing JtG wanted was a simple to use admin system so that they could have full control over defining the product catalogue and order management. Rather than having an entirely different admin site, editing is built straight into the public web site. Logging in as an administrator gives you this view:


An admin user can define categories and products, including uploading product pictures (which are automatically resized). They can see the results straight away. They can also define the list of countries to ship to and postage rates. The order management system is very simple, it’s a simple list of orders generated by a search form. You can mark orders as dispatched or rejected. The JtG guys, who aren’t in the least bit technical, have found it very easy to use.

Another thing I wanted to provide for Suteki Shop was a simple and easy to use content management system. I’ve been heavily influenced by my experience of blogging. I wanted my customers to edit the content as easily as I write this blog. To that end I’ve implemented the MetaWeblogAPI so that you can edit content with tools such as Windows Live Writer. I wrote about this in more detail here. It makes for a very easy to use CMS. Too easy maybe :)

After spending some time looking at ASP.NET Data Services I now think that this might have been a better way of providing this functionality. Since I’m using LINQ-to-SQL as my ORM it would be very simple to layer the Data Services AtomPub API over it and let blogging tools talk directly to that. In fact it would be easy to provide the entire product catalogue as a RESTfull web service this way.

When the JtG guys said they wanted flash and videos on their site I was initially not keen on the idea. My poor little server, how would it cope, streaming videos all day? Amazon S3 turned out to be a great solution for this kind of high bandwidth content. I can even get Amazon to bill JtG directly for the cost of hosting the video content. It wouldn’t be hard to upload all the static content to S3 and leave the server just hosting the generated dynamic content. But that’s for the future.

There’s still a lot of tweeking and polishing to do, but on the whole I’m very pleased with the way the software has come together. I wouldn’t dream of attempting something like this with WebForms, it’s a technology that just can’t deliver this kind of site. I’m now talking to a number of other potential customers. It will be very interesting to see how well the design copes with the demands of multi tenancy and what kinds of variation is possible without having to fork the code.

I’d really like to hear from anyone who’s thinking of using Suteki Shop as the basis for their eCommerce site. Of course you don’t have to tell me, the licence is totally permissive. You can take the code and build something entirely your own out of it without mentioning that it’s got anything to do with me.


Anonymous said...

Very cool Mike! Search friendly urls on a shopping site is so money!

Anonymous said...

Supercool mike - great work.

After Scott Gu's mentioning it I bet you'd gonna get some more Suteki love.

Great to see how
OpenSource + GreatTools
FunToCode + Revenue

You are living the freelancer's dream ...

Mike Hadlow said...

Thanks Iain, Chris and Ken!

"You are living the freelancer's dream". If only I could work on it full time. That would be very nice. I probably need at least another ten customers for that happen.

But hey, the current contract role is pretty cool. I shouldn't complain.

Anonymous said...

Congratulations, Mike - nice work. Especially the idea of using Windows Live Writer as a CMS client - very, very cool.

Mike Hadlow said...

Thanks Dylan!

Unknown said...

Hey great project!
I'm very keen to have a look.

Unknown said...
This comment has been removed by the author.