A little over three years ago I started my own web design firm. My goal for this new adventure was to deliver web applications that would allow the site owner to update content as often as they would like, using nothing more than a web browser. The industry refers to this as a content management system or CMS.
The goal was achieved on my very first project using PHP, a server-side HTML embedded scripting language, and a MySQL database to store the data. The client was able to add, update, and delete content at free will. From there I attempted to re-use the content management system I had developed for this first client on successive projects. While it worked, I found myself hitting roadblocks daily. The roadblocks were the result of designing a CMS around a specific client the first time round. After some deliberation I decided to continue to re-use the code I created on existing and future projects, while developing a new CMS from the ground up.
This would actually be the third major version of a CMS that I created. The first was a simple user session verification that would allow a user to enter data into the database through various forms. For the third version I decided to re-think the CMS, what did the client really need. What did I need, to speed up the design process without sacrificing quality, and remain standards compliant. I studied many of the content management and blogging packages out there and all of them lacked in one area or another. One of the biggest headaches was there was no good way to provide the site owner with more access to content management than a typical visitor with out giving them administrator access, along with the ability to ‘break’ the site. Therefore step one was multilevel user permissions. The next area that needed improvement was the ability to re-use sections of the site, modules if you will, and still make them customizable for each site. Make things cookie cutter, without looking it.
After all the examination I figured the best approach was to completely separate the functionality from the presentation. I decided to use a quasi MVC (model-view-controller) pattern for my design. The master set of PHP classes would act as the controller, while each ‘module’ would call a PHP class that will act as the model and then call a view to present the data returned by the controller.
After 14 months of on and off development, it’s almost here. Demonstrations of the project should be available soon. So if you want your own blog, or a page to dribble your thoughts onto, let me know. I will hook you up with a free hosting and a trial website with the CMS already installed.



