Dan's Website

Ramblings of a Disaffected Geek

Home > Portfolio
Portfolio
Here's a sample of some projects that I've worked on over the past few years.



DirectoryAustralia.com

Started: February 2006

Completed: Several stages, the last one December 2006

Purpose: A b2b business directory. The central portal is hosted at www.directoryaustralia.com, with about 3500 industry-specific portals hosted on generic domains from www.accountantsaustralia.com to www.zoosaustralia.com. 

The concept behind DA is that businesses can list for free, or pay for premium features such as being promoted to the top of search results, having a graphic banner "hotspot" ad displayed in the search results, or being featured on the portal's front page.  The country is broken down into about 80 regions and further into local areas comprised of neighboring suburbs, which gives a way for people to search for businesses within, say, the Northern Rivers region in NSW rather than trying to specify a number of km from a given postcode or town.

An accountant would list their business on www.accountantsaustralia.com, which gets indexed by search engines alongside other accountants. The portal also contains news and other information related to accountants, which makes it a one stop shop for anything relating to to the industry.  By listing in this portal, the business is also searchable from the global search facility at www.directoryaustralia.com.

The site also has a sophisticated administrative management system with ACL allowing multiple levels of administrators access to specific admin features. This was used by outbound call-center operators to sign clients up to the premium system features, and for back-end admins to approve new listings submitted via the web.  A simple reporting system is also available to approved admins.

Platform: Multiple Solaris 10 hosts running load balanced Apache with PHP5, MySQL 5.0 and Memcache.

 

Tasks: 

  • Acquisition and configuration of hardware, operating system, database and web platform.
  • Database and web software design from ground up
  • Coding of directory software
  • Data cleansing
  • Web design
  • Building of payment gateway
  • Maintenance and support

Implementation Notes: 

A significant number (hundreds of thousands) of business listings had been already collected and regional zones already defined.  Using this data, I built the site literally from the ground up.

Platform-wise, I handled everything from plugging drives and RAM into servers (the company was on a tight budget and had a few reasonable older Sun servers already available from a previous project which simply needed new drives and more memory), to installation of the servers, switches, firewalls, routers and load balancers at the datacentre. Then followed configuration of all hardware and installation of Solaris 10 (these old Sparc machines weren't going to run Linux comfortably) and compilation of custom MySQL, Apache and PHP builds.  A previously acquired HP Proliant made an excellent CentOS database server.

Some initial work on the software had already been started by a part time contractor (whom I'd previously worked with) a short while before I came on board and we agreed on PHP as the platform of choice.  I refactored the existing code into PHP5-style classes and got to work building the site around it.  Pseudo MVC modeling was done using Smarty for templating, a thin layer of PHP for the controller and a large set of objects encapsulating business logic and handling database operations.

After the initial deployment of the project, adjusting of database queries and indexing, I addressed some scalability issues by using multiple levels of caching - APC gave a significant boost by saving on pre-execution compilation time.  Memcache was a real boon, initially for caching some database queries and eventually whole chunks of generated HTML.  Client and webserver side caching (playing with Apache Expires and MCache directives) all gave further improvements. Finally, mod_rewrite magic was used to create SEF URLs.

Some use of Xajax library on the administration system provided a little AJAX goodness to speed the system up for call centre staff.

Due to budgetary constraints, I had to do the web design myself - something I've never claimed to be expert in.  The layout there is not wonderful, but the feedback has been that it is certainly usable and unobtrusive for user experience.

For a period I worked with an overseas-based developer on the system, so developed a simple branching and merging and release strategy for our SVN code repository to manage development.  Bugs were tracked using Mantis.