Creating your own web shop – Part 1: Where to start

Featured Image

Creating your own web shop can be a tedious task, both technically and time consuming. Not to mention there are tens of quality PHP based web shop systems out there available for free. One of the best if you ask me is Magento, which exceeds the term web shop system by even bigger term “platform”. However, regardless of how some much a given system/platform is feature rich there are always those special clients with special requests which exceed the possibilities of even the mightiest eCommerce systems/platforms out there.

In my experience, usually these type of clients are either big enterprise level clients or “small first time running a web shop” client. Big enterprise level clients usually know very well what they want as they outgrown the features even the most feature rich platforms can give them out of the box.

Before I go any further, I would just like to clarify one thing. This article is by no means advice or suggestion you should consider building your own web shop solution over choosing Magento CE, PE, or EE or possibly some other professional/enterprise web shop platform. In my opinion doing so would only be justified in situations where desired feature list massively exceeds the features offered by any of Magento versions, or if your budget and delivery date are of no or little importance.

Seems like building your own web shop system these days comes down to (1) satisfying your personal needs as a developer (meaning you got some time on your hand and you wish to play with building something out of the scratch just so see if you can do it), (2) You really have a special feature list you need to implement in your own web shop while at the same time you do not need all or any of the features offered by powerful web shops that are already there. Everything else seems just like reinventing a wheel, because all it takes is to develop extensions/modules for existing systems/platforms and save yourself both money and time.

OK, enough for the introduction. Let”s get down to it. Where to start when creating your own shop? I would say there are five major topic that need to be outlined:

  • Feature list (in a broader term this should come with proper software requirements, as noted by beeplogic below in comments),
  • Development platform selection,
  • Overall budget
  • Available resources
  • Expected date of delivery

Feature list should cover a full list of requested features, like: Customer Single Sign On (Facebook, Twitter), One Step Checkout, Implementation of XYZ payment gateway, Product Review/Comments System, Multi-language, Multi-currency, Email Notifications System, Product types (standard, downloadable, bundle), etc.

Development platform selection should evaluate possibly several different platforms that might be interested for our project. For example, usage of Zend Framework over Symfony over CodeIgniter over cakePHP etc., if we are talking about PHP platforms.

Overall budget is pretty clear. Probably the most important thing here to note is that you should never plan your project on “how to spent entire budget” but more like “how to deliver all or most of the features by expected delivery date not exceeding the overall budget” concept. Sometimes clients need reality check, and they need to be forced to either prioritize or dismiss certain features if the budget is low.

Available resources are all those people (developers, designers, project manager) in your team which you know will be working on a given project.

Expected date of delivery is extremely important in the big picture as it represents the link between feature list, overall budget and available resources. For example, imagine someone gives you a budget of $500K, in order to deliver a system with 50 outlined features with a team of 7 experienced people working on it within 3 months. Let”s assume you take $120/hour for development services. It comes down to $120/hour * 8h/day * 5days/week * 4weeks/month = $ 19.200,00 per month per developer. Which is around $134.400,00 per month for entire 7 people team. In 3 months time this turns out to be $403.200,00 meaning you are not able to spent all of the budget available. Biggest mistake for a project and people on it you can do here is to throw in a few newbies just to fill in the gap for reaching the budget limit. This disrupts the workflow of the rest of the team for two reasons: (a) newbie developers need significant time to get to the level of senior developers thus not being nearly productive as other team members, (b) each team expansion requires extra management input or even change in management philosophy.

What I outlined above usually makes sense in business environment where entire team is working on a new system/platform. Things are significantly different if you alone are trying to create something in your own time (usually as a hobby). In that case we are usually focused on first two topics: (1) Feature list and (2) Development platform selection. Meaning we have no budged to look at, no expected delivery date to worry about.

In my next articles under this topic I will focus strictly on development platform selection and the actual development of web shop from ground up. Until then, I”ll give you a hint… Symfony + Zend Framework + Ext JS 🙂



  1. Have you looked at ? You really don’t need to set up your own php code to build a webshop, GetShop and Shopify ( is seiously good options, it has all the features you need for a webshop, and you can build it in a fraction of a time.

  2. I’ve just finished reading Get Real by 37signals ( you can read it for free online.), which can be a real eye opener (no pun intended) if you’re still stuck with the “lets plan every detail” mindset.

    I’m not claiming one approach is better than the other, but suggesting that there is only one as beeplogic was doing, is a tad extreme.

    Also, since it wasn’t mentioned in the article, I want to stress the importance of the target audience, especially in relation to your UI/UX. Even when people are getting accustomed to shopping on the internet, which means that less and less “niche market customers” (if there is such a thing on the internet) need their hands held during their online shopping session. More often than not, UX and UI are overlooked, tucked away under a cascade of features which desperately try to create repeat customers. When in essence, that is what your products should do. (Why would I share product Y with my 200 friends on facebook before I’ve even pressed the ‘buy’ button, let alone received and tried it!).
    Everything which enables your customer getting that product on his doorstep should be as transparent as possible. And that means stripping everything down to the essence.

    Very interesting blog post though Branko, and I’m looking forward to the next articles as I’m in the process of writing my own webshop.

  3. @beeplogic no offenese, buy you haven’t spend much time actually developing software have you?

    You sound like the green manager who didn’t see very many of these unicorn projects blow up in his face. Planning is fine and all, until your plans are matched against reality

    That, or you’re a cowboy developer thinking that development really is easy. Until your client ends up paying twice your rate for another developer that has to clean up the mess you left behind.

    Developing is anything but easy.

  4. No Deadline without proper software requirements! I’d say thats an item missing from your list of things to or needs to replace the feature list. Integrating with your ERP or accounting software may not be a feature, but a requirement. Integrating with a third party platform may be a requirement for a product you intend to sell. Without understanding the what needs to be built and its nuances how can one suggest a deadline? A budget needs to include planning, development and testing. Most of the time should be spent planning and testing. Developing is the easy part.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <blockquote cite=""> <code> <del datetime=""> <em> <s> <strike> <strong>. You may use following syntax for source code: <pre><code>$current = "Inchoo";</code></pre>.