Hi folks,
I've been kicking around the idea of implementing what I call, for lack of a better term, a website "application framework". The idea is that it provides a number of common services, while allowing you to plug in (prewritten or your own) applications and pages. These applications would make use of the common services, much as a PC application makes use of file open and save dialogs, theme, window manager, etc.
The framework would --
- manage users: ID and password, common groups (inclusive and exclusive), register, delete, ban (single sign-on for entire web site, rather than individual ones for each application)
- provide common services such as
- an email interface with send rate throttling
- BBCode for editing and display of text
- breadcrumb trails, page selections by number, and other navigation aids
- a database abstraction layer, so applications can be moved to different databases easily
- easy way to determine permissions of given user
- optionally SEO-format links
- consistently-styled interface components such as 'boxes'
- CSS-styled layout, not table-driven
in an extensible manner - provide overall themes or skins
- maintain sessions, so that users have a seamless experience moving from application to application
- implement a clean method of adding mods or themes to applications (and removing them), without the usual pain of broken installs and removals
- provide consistent language support across applications, with a base language (and icons) and overrides in a selected language (everything is UTF-8)
Each application under the framework would inherit everything above, and could add in or override --
- application-specific groups, behaving the same way as the overall framework's
- supplemental user information (e.g., record of purchases table, or billing and shipping addresses for an e-commerce application)
- application- and page-specific themes and overrides (e.g., different departments in a store might get different themes). A page could faithfully follow the theme and just plug in its own page-specific material, or it could ignore part or all of the theme.
So, the idea is to have a common
framework into which you could mix and match all sorts of applications: forums, stores, wikis, galleries, blogs, whatever; with consistent look and feel, interoperability (no losing your shopping cart contents when popping over to the forum to check a product discussion), and single-sign-on for the whole site. Naturally, the pages and applications installed would need to be written to certain standards, using certain libraries and certain framework calls. Obviously, an online store written for this framework couldn't stand alone, without the framework's services. On the other hand, you could still install some favorite application into its own directory and make a link to it from a framework page -- it would have its own style, own sign-on, etc., but would still function. If I install a shopping cart, every page could show an icon reminding you if you have items in your cart (not to forget and abandon it).
That's the target. Now, before I re-invent the wheel, are there any Content Management Systems (or other software, for that matter), that already deliver most or all of this? I've taken a brief look at Drupal and Joomla, and the impression I get is that they basically control everything, not giving an application designer all that much leeway and discretion. Is that a fair assessment, or haven't I looked deeply enough into what these CMSs can do? I don't want to be forced to serve every page from the CMS's database, having to accept its theme. I want the ability to have separate databases for each application, and not
force them all into one huge database. The more separated the applications are, the easier it should be to upgrade or remove them if desired, versus a highly integrated system.
So is there open source software that will do as I want? I'd rather use something canned than write all this myself. Is module architecture well documented, if I need to write something myself? If I install, say, an e-commerce module into Drupal or Joomla, is it highly integrated? Is it easy to extend its function if I need to make changes (e.g., handle oddball tax rules)? Does it give me the flexibility I need? Can I keep all the different modules (store, forum, wiki, etc.) cleanly separated from each other, with updating or removal in mind?
Thanks much for any thoughts or recommendations on all of this. I'm not all that familiar with CMSs, so please don't beat me about the head for asking such questions! I'm more familiar with separate applications (e.g,, SMF, osCommerce) and their duplication of services and own problems with mods and updates, not to mention the difficulty of getting a consistent look and feel on the same site.