n.times { code! }

Friday, September 25, 2009

Congo-cms, a content management framework in rails and mongodb

I've started a project in github, which is a prototype of something that I've been searching for years: a flexible content management system/framework that makes sense.

I've looked into ez publish and similar stuff, recently I've met expression engine, and I have even considered the drupal model. What all these systems have in common is one --in my opinion-- bad constraint: they store their data in a relational database.

Those CMS or CMF basically "simulate" a documental database on top of a relational one. I can't see how that can be good.

My aim with congo-cms (a name which comes from content+mongo -- yeah, I know, pretty smart name xD) is to offer a framework to define flexible datatypes, as ez publish and its companions do, but with the actual data stored in the proper way. If you create a blog using congo-cms, the blog post documents stored in mongodb, won't differ from those that you could store if the application was a plain weblog made with rails as in the old fashion.

I'm using MongoMapper mainly because it really fits my idea of using embedded datatypes. For example a User could have Addresses, and those should be stored in the User document itself. With MongoMapper this feature comes straight out of the box.

I hope to improve development a bit in the next weeks, and hopefully we will use something similar in my company's next project.