Which CMS as the basis for a custom web application

I’m looking at building a custom web application for a client (a specialized auction site, in this case), and we’re evaluating using some existing CMS as the “scaffold” for the application.

The justification is the fact that for many custom web application projects, some 70% of the code written goes in to adding CMS features, user management, and basic admin CRUD. Presumably, if we start with an existing CMS, then those to components will already be built.

Read More

We’ve decided to stick with PHP for distribution and deployment reasons. The top CMSes we’re evaluating are WordPress, Drupal, and Joomla. Here’s our analysis so far (listed in order):

WordPress
Pros: Dead-simple design. Extremely popular and understood. Very solid recent security history.
Cons: Perhaps a little too simple — can it be made to work?

Drupal
Pros: Potentially more friendly to custom application development. Decent security history.
Cons: More complex and difficult to understand.

Joomla
Pros: Popular and well understood.
Cons: Some security concerns

Once of the biggest issues we’re running up against, and what we hope to gain from the S.O. community is understanding how easily these can be customized to become a custom application. As an example, when the client goes into his administration area, will he get the impression that this is an, “auction site with a built-in wordpress CMS”, or will it be a “wordpress site with an auction plugin”? We’re hoping for the former rather than the latter. But can it be done?

Or perhaps are we looking in the wrong direction? Should we be looking instead at something like CakePHP? (Note that options like RoR and Django are off-the-table because of distribution and deployment reasons.)

Here are some related (but not identical) questions which have some useful information:
Using a CMS to Design a Web Application
CMS for custom application

Related posts

Leave a Reply

5 comments

  1. This is a question we used to face regularly.

    Our development arsenal consisted of WordPress and CakePHP. We used the former where we could and the latter when we really had to.

    Unless you’re doing something really radical, you can probably do it with (something like) WordPress. These days, the admin area can be heavily modified and custom taxonomies allow for meaningful entities rather than just posts and pages.

    What you need to consider is the wealth of features and testing that comes with an established CMS package. Plus, WordPress et al. have an enormous collection of plugins/extensions, which can take you even closer to where you need to be.

    I guess what I’m saying is, you’d find it hard to convince me to drop back down into something like CakePHP.

    EDIT: Six revisions have a great post on customising the admin area. Also, if you have specific wordpress queries, remember we have a really strong stackexchange site waiting for your question!

  2. Unless you’re doing something radical you’re going to be better of using a CMS (in agreement with Tom Wright above).

    I’ll pitch in for Drupal. Its a extremely capable CMS that powers some world class websites like http://www.whitehouse.gov (The US President’s Official website). That itself speaks volumes about its scalability, reliability and security.

    Check out http://drupalsites.net to see a whole set of websites made in Drupal. Once in Drupal you’ll have access to one of the most active communities out there for an open source project. This community has produced over 2000+ free modules (or add-ons) to meet requirements that cannot be fulfilled by vanilla Drupal.

    It is true that Drupal has got a sharper learning curve than Joomla or WordPress. But Drupal, I believe is more powerful than WordPress and Joomla. Once you’ve mastered fundamentals of Drupal its easy to roll out features. The whole Drupal system just feels consistent. Some CMSes are an endless series of one-off modules that just need to be configured that way. Drupal has some powerful modules like Views and CCK, that, once mastered will help you accomplish so many things that would have required many different hacks/add-ons/custom programming in other CMSes.

    Joomla has a reputation for being easier to learn but ultimately difficult for building truly complex and massive community based sites. WordPress, though fast maturing with version 3.0 is still a ways away in being as feature rich as Drupal/Joomla. Then there are some other upcoming CMSes on the horizon — check out Packtpub CMS awards — you can see some good CMSes listed there.

    Essentially it comes down to this — CMSes like Drupal are built to accommodate mainstream website needs. If your site is not radical (today’s twitter or foursquare equivalent) stick with Drupal/another CMS. The development times are just severely reduced. Only once you feel that what you are doing is not practical in a CMS should you choose a framework like Cake, Django etc.

  3. I’ll jump on the use a CMS bandwagon as well. There is simply no point in starting from scratch unless you have a truly unique app that doesn’t need any of the stand user/content type stuff.

    I would base my decision on how tech savvy the client is. I would tend to stay away from WordPress as extending it is not nearly as simple as Drupal or Joomla. It takes a lot more work to get WordPress to do the same thing and its feature set out of the box is very limited.

    We generally go with Joomla because the admin is a lot easier to teach a client than Drupal. Drupal has better user management and access control out of the box than Joomla, but there are very good extensions that can give you both if necessary. I think the other advantage Joomla has is its MVC architecture and huge development community. Nearly 6000 GPL extensions and many more non-GPL. Add in a good CCK like K2 and the sky is the limit.

    As for customizing the admin, we use a custom install for our commercial sites. It’s branded with our logos and all of the Joomla stuff is removed. None of the core extensions that are unused show up in the admin and depending on the purpose of the site it can be made to look like an app with a built in CMS. None of the changes we’ve made touch the core and most are simple settings turning stuff on or off as needed. You can even take it a step further with a simple admin extensions that gives you granular control over what a user sees when logged in to the admin. We haven’t felt the need for that though.

    In the end, it’s more about which CMS you feel the most comfortable coding extensions for. It’s already been proven that all 3 can be made to do basically the same thing so pick the one you like the best.

  4. Our company has a great experience in web-development, but it was decided recently to direct common energies to web-development based on Drupal development because only in case of Drupal developments customers get:

    • a web-site build on the safe system which is based on open source code, the system which is tested by million users all over the world. professional content management system;
      • it is more likely that possibilities of Drupal system are limited by developer’s imagination rather than facilities of Drupal itself; this will be a web-site with great performance and scalability;
      • confidence that CMS producer won’t disappear;
      • web-site with moderate price even if there is a need in development of some specific features which are not developed in Drupal yet;
      • new versions of Drupal core and its modules are available for free.
  5. I would definitely go with ExpressionEngine. It’s a very full-featured CMS, and using it’s Query module and allowing PHP in templates, you can get pretty fine-tuned from within the CMS framework.

    If you need more power, it’s built on top of CodeIgniter, and developing add-ons for it is very easy for a decent developer.

    It’s not free, but it’s pretty perfect and worth the cost ($300 for commercial sites).