MultiShop Product Catalogue System & Cart (osCommerce Development)
This is a web-based project to build an advanced MultiShop Product Catalogue System & Shopping Cart. Since the application is an e-commerce system, and many of the features we want are found in the default setup of the standard osCommerce shopping cart script or the contributions/modules made available by the oscommerce commmunity, we believe it will be more efficient to base the project around the original oscommerce script and to customize it to our needs, by installing or cloning the freely available contributions and writing up the code for those features which have not yet already been created in these sources. Therefore, the project specification will made on the assumption that we are customizing oscommerce, however if you have the ability to produce an application from scratch that meets this specification, you are welcome to post your bids.
Our goal is to create an online shopping center, a website that showcases the products found on the high street, and then links to those shops which are selling them online. An example of a site like this is Pricerunner ([url removed, login to view]). Unlike Pricerunner however, we will not be charging the merchants a cost-per-click but including their websites on our own initiative. Our web project is designed to be an online product catalogue for thousands of products, giving item descriptions, reviews and ratings, while also linking to the major retailers so that our visitors can complete their purchases on the merchant site after making an informed decision based on the information on our website.
This project is suited to skilled programmers who have the ability to implement our feature specification, and so we will be giving extra consideration to bids from those who have past experience in this field and have worked closely with the oscommerce script. It's recommended that you give a detailed proposal, demonstrating your understanding of our project's requirements and a presentation of previous work samples that highlight features related to this project.
For the purpose of clarity, we will refer to our website as MultiShop.
MultiShop will have a typical three column layout with a top header and footer that spans across the page. The left and right column will have a fixed width while the center column has liquid effect to expand and fill the remaining space of page. The standard osCommerce distribution has a layout like this already, however it is created using <table> tags, and this needs to be converted to clean CSS using <div> elements, thus stripping all <table> related tags from the code. There is a tutorial online on exactly how to create this layout using just CSS including source code, so this can be used by copying or cloning it and applying it to the osCommerce script.
osCommerce displays a number of information boxes in the left and right column and these consist of things like "Categories", "Shopping Basket", "Best Sellers" etc. See [url removed, login to view] These 'blocks' can be switched on & off through the admin backend in osCommerce with sort order function and the effect is global across the site. MultiShop will have similar infoboxes but the added flexibility to choose which infoboxes are shown depending on the page being currently viewed. For example a particular category may require an infobox which displays special information that relates to that category only so the infobox is switched on for that page but switched off for others, Alternatively, a subcategory may require more or less infoboxes displayed so the default function is to inherit the parent category settings but still allows the administrator to add/remove as required. So I would expect some form of dynamic scripting to check & load relevant content into the left and right column, based on what is shown in the centre column.
The number of products available on the high street runs into the tens of thousands, maybe more. Classification of these products into the correct categories for the navigation menu is a serious issue. Sometimes a subcategory might be applicable under more than one main category. For example, 'Memory Cards' might be shown as a subcategory under "Digital Cameras", but also as a subcategory for "Computers". Therefore there will need to be the option to clone a category and display it under multiple other categories: the clone effect would mean editing a product once would affect it under all the categories. For this reason, the MultiShop application should be developed by creating a keyword tag system. This method already exists in popular blogging scripts, where a number of keywords are applied against posts as tags, so when a tag is clicked it shows other posts with the same tag. In this case, each product would be assigned a number of tags that describe the item and a selected few would be assigned as being category tags. Then the categories/navigation menu backend will consist of a tree system that is created by arranging category tags into order desired and cloning subcategories as required. This system of tagging keywords to products means lots of flexibility and ease at creating category specific pages by inserting a small code like [Get products with keyword/tag: 'digital camera' + 'sony'] which would display all sony digital cameras. In this method, the admin backend dealing with the navigation tree would have assigned an index page to each category, this is where the page content for that category can be edited. The category index page would be created on the fly by the admin panel when setting up the category tree. It would have a default layout template that could be edited: it would consist of variables and specific text. As an example, there is a top level category called "Digital Cameras" and it has several subcategories based on manufacturer: "Sony" "Canon" "Panasonic". When a user clicks on "Digital Cameras" it will load the category index template for that page and it may look something like this:
<show category title>
<show category description: if entered by admin>
<show subcategoryproducts=sony display=$get_number>
<space to enter some descriptive text between displaying the sony and canon product categories>
<show subcategoryproducts=canon display=$get_number>
<space to enter some descriptive text between displaying the canon and panasonic product categories>
<show subcategoryproducts=panasonic display=$get_number>
<space to enter more text or variables such as <show subcategoryproducts=camcorder+sony+star buy>
more text here etc.
The category index page as above would also have the left and right column infoboxes panel, where the admin could see which info is being displayed globally i.e. navigation menu infobox in left column, a shopping basket infobox in the right column, then there would also be the option to add more infoboxes with sort order such as camera buying guide infobox or best selling items infobox. When adding the infobox to that particular category there is checkbox to mark if it applies to that category only or if it is inherited by the subcategories.
As with the above example index page the display=$get_number function would be defining how many products to show for that subcategory block; it would be set to a global variable by default to show say 10 items but can also override to show less or more defined on a category specific level.
The product details page will consist of images, description, faq’s, reviews, votes, similar product modules (accessory products & we also recommend / customers who looked for X also looked at YZ). When a product is being viewed, the user will have the option to ‘bookmark / star it’ in order to save the product link in user profile as a general product link: there is also a button to add it to ‘wish list’ and another button to say ‘I already own it’. Marking the products would result in them being shown in the user profile page under separate lists for items wanted, items owned, and general saved items of interest.
Images for the site products will be uploaded in variable dimensions but they will need to be resized on the fly into different sized thumbnails i.e. 111px for category view and 222px for product detail view and say 666px for when it is enlarged. Sometimes an image may not have same width and height by default so it may be 400px width and 300px height, however the thumbnail size for consistency will always display 111px width and 111px height: so this would mean the image is out of proportion, so the thumbnailer would need to account for this by increasing the canvas size of the original image uploaded so that it has same width and height then is resized. I believe there is an existing contribution for creating thumbnails on the fly, and this can be copied from or cloned and modified if necessary.
On the product details page, the description and images are shown in the center column, and in the right column, there will be an infobox with a list of shops that sell that particular item. i.e. there will be a logo for say amazon then the amazon price and then a link to amazon site itself leading to that products page so it can be added to cart and purchased. There will also be other stores listed here depending on who is currently selling that item, and this info will be either supplied individually from each product edit page or merchant information can be mapped to each product in bulk through a product data feed: shops like amazon can have tab or comma delimited files that contain a list of products, very much like a froogle data feed, however there may be more columns of information in one feed and less in the other: each column in the data feed is given an attribute such as UPC or SKU or title or shop name, shop link etc.. and these columns may be arranged in different order depending on where the product data feed is coming from. The admin system will need to be developed so that it can create and read templates from these data feeds. One feed might be in the order: 1-Price 2-UPC 3-Shop 4-URL however another type of data feed may be arranged as 1-UPC 2-SKU 3-Price 4-URL 5-Shop. This would entail the ability to create a template for how each data feed is arranged in the admin, and then upload that data feed into the admin panel and have it effect an update to the system products.. so we would turn on and show new shops selling that item, or edit the prices for shops that are doing new promotions or even to hide shops that are now out of stock. This part of the development is critical since we are likely to have tens of thousands of products and updating them in bulk through data feeds is the essential solution.
We have provided here a detailed roadmap on the development of our MultiShop project, highlighting all the major features which give a reliable indication of the level of work involved. With projects of this kind, there will naturally be many smaller tweaks and adjustments that arise throughout the development and we will be happy to provide detailed instruction on any aspect of the site.
We would also like to point out that there are some functions of the site, such as bookmarking or adding to wishlist, or comparing products, or navigation menu which are converted into dynamic AJAX method and this will be carried out by our own AJAX developer, and so you will be expected to collaborate and co-operate in a professional manner.
The site will be hosted on our Linux server with php and mysql database support. The multishop will also require search engine friendly urls and to generate a sitemap, and contributions do exist for these sort of functions which can be cloned and modified: this is so that we can index the pages when we need to deploy a Google Mini search appliance. Since we are building on the oscommerce script which is originally designed as a shopping a cart script, we also want to keep the shopping cart functionality so that we can also sell our own items should we need to through the product catalog.
If you require clarification on any aspect, please ask before posting your bid for the total project, and please ensure you have read this project specification carefully.
Also note that we will be designing the site and its graphics ourselves.
Looking forward to working with you.