So I built my own CMS...
With the myriad of choices for a content management system (CMS) out there, it would seem silly that I would just go out and build my own. I mean, we have Wordpress, Joomla, Drupal, NUKE...why would I go and build my own?
I have a variety of valid reasons that I will share with you today, as well as give you some insight if you ever want to try this on your own. If you want to pass on all this and just see the demo, click here.
A little history
When I first dove into PHP back in 2002, there simply were no 3rd-party CMS programs out there. Perhaps some ERP setups, but no Wordpress, no Drupal, no Joomla. At that time, I was tasked with building an inexpensive, but dynamic site for a local record store, so I simply had to do it on my own.
My initial CMS was just a series of simple forms to add or edit/delete pieces of data. Surprisingly, even the system today is mainly that, with a lot more bells and whistles to make it more efficient and work better for the client.
As the years passed, I did try to develop sites using some of the more popular CMS solutions out there, but time after time I'd end up coming back to my own setup and simply implement it because I felt it was the best solution for the user.
My difficulties with 3rd-party systems
Now I'm not going to ridicule and proclaim one should never use any of those 3rd-party setups, but my own experiences showed me you can do a myriad of things with any one of those systems, but then when you hand over this site to your client to update, things tend to go South.
When I built both Culinaria and Intergrüv Networks using Wordpress, I felt the benefit was on how swiftly the two sites came together with the fast setup Wordpress advertises, and the vast selection of plugins allowed me to fill in most of the blanks. I had little problem figuring out and competently adding content to the site, but when I had outside people try to do the same, it became a mess.
The problem is that I consider myself a "techie", and I know HTML like the back of my hand, so when I hit an issue or need content laid out in a certain way, I could simply click on the HTML button and tweak the code. The average person doesn't know this though...so I would see someone tapping the space bar 100 times to move some content over on the screen. Even worse was when you watch your solid content layout turn into a mess when the client will toss in colors and font sizes that clearly have no place. With Culinaria I also remember the difficulty one writer had in just adding recipes, as often she would use a plugin to enter said recipe, but the HTML formatting would cause errors on the page.
My experiences with Drupal and Joomla were similar. I'd notice how easy they were for a developer to set up and customize, but to make changes and especially for a non-techie to update became a chore. I'd watch coworkers struggle to update a site we built for a client, thus they would send the content to the in-house programmers to add. I myself remember my experience Drupal as being similar to when you see one of those old computers of the 1950s that took up a whole wall in a room. I felt like I had to flip ten switches just to make one thing happen. Plus I'd have to search and seek out what those switches were.
The user has to come first
Time and time again, I noticed how much these 3rd-party setups were wonderful for techs to set up and customize, but outside of that, they were not very easy on the end user who needed to update their website. I've even seen things get to the point where companies who use one of these systems end up hiring someone just to update their site.
A big business can afford a full-time web person, but smaller businesses cannot. In my book, I think the whole idea of a CMS was to get the mundane maintenance work off our backs. To get rid of the tiny nickel and dime work of updating client websites so a designer and developer can concentrate on the lucrative work of building new websites. Believe me, a designer or developer can make more money on new work over maintenance work.
I've also seen instances where a client had a static website with a layout they wanted to keep, but wanted it changed to a dynamic site. With a 3rd-party setup, you can't do this. Not unless you're willing to change most of the site to fall into a templated form. So if you have one section that lays out one way, and another that lays out a different way, it'll take some very clever work to make it happen. Most developers will simply tell the client they need to pick one.
I personally didn't want that. I wanted a system where I can completely customize the administration area to work with how the website is supposed to work. Not the other way around. I wanted to lay things out easily and thus any average person can come in and learn quickly how to add or update content with little difficulty.
A look at my CMS
If you missed the link earlier, you can check out the demo of my CMS here. Upon first look, you might think I copied Wordpress, which I did in some areas...mainly the look and feel. I did this deliberately for those who might feel more comfortable with some level of familiarity. What you will notice that's different is how the navigation is shorter, more simpler, and especially directly relating to sections on the mockup website that accompanies this demo.
If you look through the sections, things are laid into simple forms that directly walk the user through the steps of adding and removing content. I utilize some open-source scripts and programs readily available, like TinyMCE and a great slug script written by Perry Trinier, which I use to make the permalinks. In solving the problems even of clients going wild with their content, I even went and removed functions off the TinyMCE editors, thus ensuring the content will keep within the look and feel of the site.
I've also instituted a user account system, so whether it's this fictional business or a blog with multiple users, one can simply add accounts and set up permissions and restrictions, thus limited users can come in and only be allowed access to whatever areas of the site an admin would allow.
In the end, my biggest goal is ease of use. If average people can easily use this, then I've succeeded.
There is a downside though. This system cannot be easily downloaded and installed like Wordpress, Drupal, or Joomla. For me, this is more about taking versions that I've built and altering them in code for a new client. So I'll take someone's news and event setup and change it so one could add music titles to their site, or take the blog category setup and alter it so a user could add staff member bios on the "About" page. You have to know PHP to use this, hence why I'm not just actively giving it out.
So why should you try this?
On a macro level, I would say it helps you come up with ideal solutions for clients. Right now I'm watching many clients abandon 3rd-party and make job ads either for a complete custom-built system, or at least a "guru" of their chosen CMS who can go beyond theme and alter the admin area to make it easier on them.
On a micro level, you should try simply because it will make you a better coder. It will push your brain to think creatively so even your wildest layout ideas (as a designer) can be built into reality now that you can back them up with tools to make it work. I know many say a guy who knows the code won't be able to think outside of the box, but I personally like that I am not restrained by what other systems will "allow" you to do.
Even if you end up working for clients who want the 3rd-party setups, you will be able to more effectively alter and edit them to fit their needs, so when you see a job ad where an employer wants the guy who can do more than just skin a Wordpress site, you'll be their man.
What do you think of my CMS? Would you ever try to make your own?