Thinking….
I have thought a lot about my old post. After delving some more into CRE Loaded, I have discovered a few things.. First and foremost is, a shopping cart is a hell of a lot harder than I first imagined. I had thought about doing a more API version, with an AJAX’d back end. That way, people could design a site, and then just ‘drop in’ the required parts. This seemed easier than osCommerce’s approach of ‘edit our code to suit you’. Editing that mess of nested tables is a major pain in the ass.
I knew there was a reason there is only a handful of open source carts available. It would need to have everything required, and be portable and easily customisable to different design/requirements. At a bare minimum, I was to include
- AJAX’d back end. I am pretty poor at design (though I feel I am slowly learning), so I think I’d need to get some help from a (yet to be found) designer friend.
- Membership system. Which would include postage addresses, personal details, previous order history, all of which would be editable/viewable as required.
- Shopping Cart. Obviously.
It would also be a great opportunity to learn PHP 5, but as I’ve found in the past, the first thing you develop in a new language (or new major version) tends to be a little cumbersome and a less than optimised final product. I would make a bunch of functions which would allow you to drop in ‘modules’ into an existing design. Something like
<?php showCart(); ?>
This could output a semantic xhtml unordered list with all the products. Maybe I could insert some parameters too, for a few different methods of output. Then you could just jump into your CSS file and start styling the output. This is something which is a major pain in something like osCommerce.
From the outset, I decided it would have to be the ‘wordpress’ of shopping carts. Fast, semantic and with web standards in mind. This also got me to think exactly how many development hours this would take, not to mention the age old question ‘Am I merely re-inventing the wheel?’
Some of the features I’d expect would be, at least
- Purchase with/without an account
- Create/edit product categories with unlimited nesting levels
- Create/edit products
- Ability to have downloadable items
- A system in place to allow shipping/payment/order total modules
- The ability to edit customer/order details
- Easily editable emails that are sent to customers (this is a pain in osCommerce)
- Products that can have custom attributes. And an easy way to set attributes to multiple products (this is also unnecessary difficult in CRE Loaded)
- Basic CMS system for clients to edit articles such as terms & conditions, privacy policy etc
- Contact us form with customisable fields, optional CAPTCHA etc
- Support for multiple languages. Is PHP’s ‘define’ best for this?
- .htaccess set up for clean URI’s
- Custom 404 page
- Ability to have admin groups, which can have customisable access to different sections. Example, a part time employee might belong to a group called ‘limited access’ where they can only view/edit orders.
- Manufacturers listing
- Search ability, and advanced search ability.
- Taxes system where zones can be set up.
- Easy ability to edit custom languages.
- No Javascript alert()’s.. Friendly error messages written to the page via the DOM
- AJAX where it would improve the user interaction, which gracefully degrades to non-javascript-friendly submit buttons etc.
- Ability to edit invoice forms.
- Dashboard that shows total sales, last orders, last search terms, abandoned carts etc
- Detect PHP errors and a system to submit bugs etc
And it would be nice to have
- Affiliate sales
- Gift Vouchers
- Points/redemption system
- Easy update to latest version
- Customer accounts must be authorised first
- Customers may review products, which might need to be approved by admin first
- Ability to add products to a cross sell list
- Ability to make products on special
- Ability to make banner ads that rotate randomly, or rotate them with some jQuery,
- Ability to upload images, and list them in a zoom box/list/modal window etc
- Newsletter system with templates
- Reports: Downloadable as CSV. Such things as orders/customers/products/abandoned carts etc
- A dashboard system with a graph to show sales/time etc.
- Wishlists for customers
- FAQ/ticket system. Ask a question, and have it answered and optionally automatically shown on a FAQ page. Ticket system to handle problems.
- Parameters on the PHP functions to slightly alter the XHTML output. It is more important I think to supply paramaters in code as opposed to options in the back end. This allows the coder implementing it to enforce certain things, where a client might change options and break the design.
- Ability to easily add Google Analytics etc..
- A method similiar to Magento where you can turn on a flag in the backend to ouput the directory path to certain included files. This makes finding those pesky files very easy.
- A caching system which can be enabled.
- Ability to back up database and image files etc
- Blacklist certain credit card numbers
- Deny IP’s
- ability to add/edit tags
- auto generate google site map
- GUI to edit robots.txt file
- View online customers
- Add special CRON job’s, such as email customer on his/her birthday with a special deal and voucher code.
- Product custom tier pricing, example, purchasing over 10 items will reduce the price.
- Ability to add/edit polls
- Ability edit what emails are sent where to notify of actions, example, customer buys a product
- Import products from CSV, custom ability to match up certain columns with certain internal fields
- SEO system, which can allow custom keywords, title tags, description meta tags.
- Ability to add/edit Favicon
And that’s all I can currently think of!
The technology I was going to use would be PHP 5, mySQL with prepared statements, javascript + jQuery, CSS and XHTML 1.1. I would strive for web standards and graceful degradation. I’ve noticed osCommerce and Magento can be pretty painful without Javascript enabled.
Also on my to-do list is to get a 24″ monitor. My current one is (my guess) is 14″ and painfully small. I have to leave my 20″ (or so) work monitor to come home to this little screen. I think I’ll keep the old one, and do the multiple monitors thing.
I’d like some input, such as if I’ve forgotten any items for the shopping cart system, or any suggestions as to the way I was to handle things, such as the technology I am willing to adopt for the project. Most importantly, if you’d like to work with me on this project, I want to hear from you most importantly!
Oh and I’m listening to Metallica’s Death Magnetic, which actually I don’t mind. Magento must be consuming me as I accidentally typed it first as Magentic haha.
Alex DIckson