FreeTeams Web Log
Challenges of a Simple E-Commerce System: Part 1

So I just wrapped up creating an online shopping cart / store / e-commerce system for our teams which is integrated with Amazon Simple Payments.  The plan was to do something fairly simple which allowed users to create items that had a few options, and let it evolve from there if enough teams wanted more features.  

I have built a couple of e-commerce systems in the past so I had a decent understanding of the process, and while there are some tutorials and some sample code online, I wanted to document a few things that I had to decide that weren’t normally mentioned in the posts I found.

This post will be describing a little bit about the architecture of the system, with further posts getting into the technical side and issues I found.  As I mentioned earlier, the system is only comprised of items which are broken down into 3 types.  All items have the following regardless of what type they are: a mandatory name, optional description, and an optional URL for an image.  

Simple items have all of the above as well as a price and the option to specify whether the item has unlimited inventory or has a set and managed inventory.  If the inventory is set, the seller puts in how many items are in stock (or 0 if it is out of stock,) and when a buyer makes a purchase, the inventory is reduced by the number of items the buyer purchases.  

Multiple Options.  Multiple option items have the original attributes, along with a single price.  What is different about multiple option items is that they have one or more options with unlimited or managed inventory for each option.   For example, you might sell a t-shirt for $15 with different sizes.  The sizes, for example small, medium, and large, would constitute three different options for the item.

Finally, we have items with Multiple Options and Prices. These items are similar to Multiple Option items, except that the price is now editable for each option as opposed to a single price for the item.  One example where this is used is that if you have that same t-shirt as above, but if it cost an extra $2 to make xx-large shirts you might pass that on and set Medium, Large & XL at $15, but XXL at $18.

That’s the basic design and requirements for the items available for sellers to add to the system.  On the front-end, buyers view a list of all the items on one page, where they can can add items to their cart with a specific quantity and if the item has options, one of those options.

That is the extent of the items in the store.  We do not have shipping prices, categories, lots of attributes or other extras.  While shipping charges might be an issue in the future, teams can build in those costs to their price, or even use the option system if they want (T-shirt shipped Priority: $25, T-shirt shipped ground: $18, etc.) 

The reasons the system is so simple currently are twofold. One is simplicity - it makes it very easy for sellers to create their store, add in and edit items and begin selling.  Second, is that in my experience there are a limited number of items a team is generally selling or collecting money for.  These are usually selling gear, apparel and tickets, collecting fees or dues for the team, league, camps or clinics, and accepting fundraising money.  While I’m sure people can think of more, I feel most teams will not need a fully featured shopping cart when adding the majority of their items.

Now, even though this is a fairly simple system, it does take a bit of effort to design and code.  I will be going over some of the technical challenges, issues, and the design I went with in the next part or two.

  1. freeteams posted this