views:

191

answers:

2

Is it at all practical to try to use Joomla or Drupal to design anything but brochure-ware or a blogging website? Are the modules/extensions frameworks really flexible enough for designing web applications that have a lot of data entry and reporting capabilities, or would you just be better designing it using a MVC framework, ASP.NET or just plain to-the-metal PHP?

Say you want to design a web application that is primarely used for entering in data and reporting on that data. For example: you want to design a website for people that own race horses.

  • Primary data entry involves user entering in the physical attributes and race records for all their horses.

  • Reporting is available for finding statistics and other metrics based on the physical attributes and race records for all the horses in the database: the users and what others have entered.

What would be the reasons or benefits of doing this in a CMS?

+4  A: 

I do it all the time with a proprietary CMS. I'm sure it's possible to write any kind of plugin/subsystem for drupal etc.

Benefits:

  • Hopefully familiar MVC codebase, you get something out of the door quicker.
  • Integration with website for free in case it is needed, since you are already in a CMS environment. Otherwise you'd have to implement basic CMS functionalities on top of your custom web application.
  • Dependency with underlying CMS. You benefit from updates such as new features, security fixes, performance optimizations etc.

Caveats:

  • Carrying the "weight" of the CMS. Maybe it has tables, objects and subsystems that you'll never use.
  • Larger code base. Steeper learning curve for maintainers who now have to understand the CMS and your business logic.
  • Dependency with underlying CMS. At least your controllers (and maybe the persistence layer) will be bound to the way the CMS does it. Try to keep your model and business logic independent of the CMS'es MVC framework.
cherouvim
Is it tedious compared to more boiler-plate-ish frameworks (like the aforementioned MVC)? I feel like it's gotta be.
Merritt
A CMS engine is usually heavier than a plain MVC engine because CMS should already contain an MVC (hopefully).
cherouvim
Really, I'd rather it be the other way around: a MVC framework with a CMS framework on top.
Merritt
+4  A: 

If the CMS is modular/extensible enough that you can write your own extensions without to many restrictions, I would definitely go that route. Think of some 'non core' tasks you would otherwise have to implement yourself:

  • User management (log in, forgotten password handling, user pages, etc. - CMS usually comes with that 'ready to use')
  • Templating (CMS will usually provide a well established templating engine)
  • 'Surrounding' pages (besides your core forms/reporting pages you'll likely have quite an amount of other pages that are easy to create/manage with a CMS)
  • Security (A good CMS will provide you with a lot of security related APIs to ease prevention of SQL injection, XSS and other security problems, e.g. in forms generation & handling)
  • Database abstraction (a good CMS should provide that for you)
  • URL based dispatching (do you want to manage your URL space yourself?)
  • etc.

Working heavily with Drupal recently I can say that it is well suited for stuff like this (except a certain lack concerning database abstraction, since it currently only supports MySQL and PostgreSQL).

You can set up a standard site pretty fast and focus your custom development on your core tasks by creating one or more custom modules that do all the data gathering and reporting tasks you need.

The downside is of course the learning curve - you should think of the CMS as a framework like any other that will take its toll while learning the ins and outs.

Henrik Opel