Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Calipso, A CMS Based On Node.js

DZone's Guide to

Calipso, A CMS Based On Node.js

· Web Dev Zone
Free Resource

Should you build your own web experimentation solution? Download this whitepaper by Optimizely to find out.

We're seeing more by the day what amazing things can be done with Node.js.  Recently Clifton Cunningham created Calipso, a Content Management System based on the Node.js server, somewhat similar to Drupal and Wordpress in terms of its speed and flexibility (and simplicity). It utilizes a modular approach, so all core features, with the exception of bootstrapping, theming and forms, are delivered by modules.

It contains a scheduler and feeds module in the core, so content can be drawn from any source. There's a great deal of flexibility in the scheduler, which can call functions exposed by any module. Any module is able to expose RESTful endpoints, in order to simplify the process of API construction.

Calipso is using MongoDB on the back end, and uses Map Reduce functions for menu and tag cloud generation. Very cutting edge.  Calipso doesn't implement caching at this point, but standard PC running the homepage, the basic CMS can handle loads of up to ~180 hits per second.

It also supports the use of stylus in themes, enabling maximum customization through CSS.  The first level of theming allows any module to render content (unstyled) as blocks, that can then be included by a theme in any section. 



For all the details, then please use the following quick links to the user guide:
    •     Introduction to Calipso
    •     What is a Module?
    •     Core Modules
    •     Community Modules

Pertinent links:
    •     Coding Standards
    •     Translating Calipso
    •     Benchmarking Calipso

Implementing an Experimentation Solution: Choosing whether to build or buy?

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}