Every once in a while I take some time outside of WooThemes to do some freelance work. However, my reasons for doing freelance work are quite different to most developers (I’m generalizing here, but usually it’s money). My reasons are usually to scratch an itch to play with a new technology, to learn how to use a particular product at WooThemes that I wasn’t part of building, or because it presents a possible business opportunity. Recently I was presented with an opportunity that fulfilled all 3 of those criteria – much to my delight.
Setting the stage
2 close personal friends of mine came to me last year with a business opportunity that would require me to build a system to manage both a warehouse stock and ordering process as well as the customer storefront. The system would be closed off to only verified users, and a specific process flow would be followed from the initial order to the completion of the order.
The requirements were simple:
- Secure customer login where Customers could create orders regardless of how much stock was on hand
- Customer Administrators would then approve or cancel these orders
- The Warehouse Manager would process the approved orders and despatch them to the customer from the warehouse
- Once the order was delivered, the order would be complete
- Payments would be handled separately, so no payment gateway was necessary
- A support forum for customers was needed as well
But what to do to get this done?
I initially thought about custom building a system in something like Kohana as I had no knowledge of any existing WP product that would completely meet my needs. In the end I decided on using WP as my code framework seeing as how I had punted WP as a development framework at last years Cape Town WordCamp.
While thinking about how to custom build this into WP, I had an epiphany of sorts. WooCommerce, at its core, has the ability to do around 70% of the main features that the system required. So why not use it as a base? It would save SO much development time!
Making it happen
So I ended up implementing a customized version of WooCommerce 220.127.116.11 to handle the orders and the stock management, basically to be the super powered engine of the system, as well as to handle the reporting requirements. WooCommerce is amazing – Jay and Mike have built an incredible product that was a pleasure to use as a base to work from.
I then used Justin Tadlock’s Members plugin to handle roles and permissions, bbPress for the forum requirements, and the Shelflife theme designed by Fresh01 (my personal favorite designer and WooThemes colleague) for the customer frontend. In addition to that, Customers and Customer Admins would never see the WP dashboard, and the Warehouse Manager would never see the frontend. All of this was achieved with WP functions 🙂
I’ve implemented the system onto a live domain as well as onto an Ubuntu LAMP server in the warehouse – I used XCloner to make the move as simple as possible – and the next step is to syncronize the 2 databases. Should be fun 🙂
Lessons learnt and how this applies at WooThemes
Being a lead developer here at WooThemes gives me the great privilege of working with and building some of the best products on the market for WordPress. Working on projects outside of WooThemes, and using our own products has always allowed me to improve them and to see how they perform in real life. I suggest all theme and plugin developers try out their own products and see how they really perform.