Ayende @ Rahien

My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:


+972 52-548-6969

, @ Q c

Posts: 6,130 | Comments: 45,558

filter by tags archive


time to read 2 min | 271 words

The Cuyahoga Project is a .Net CMS based on NHibernate. It used to be the best application to look for NHibernate patterns for beginners. Now I suggest people should look at this as a great sample app in general, not just for NHibernate patterns.

Among other things, it has been the engine behind ayende.com for the last four years or so. Along the way, it gave me very little trouble, and allowed me to manage my site without much trouble. A CMS, by nature, is an extensible system. But it is a tribute to Cuyahoga (and to what I am doing in the main site) that up until now, I didn't actually have to go into the code to make it do what I want.

I did my usual read-the-code-before-use, of course, but that was about it.

Today, I spent several hours implementing a very simple module in Cuyahoga. This module simply displays and redirect links. You can access the source for this module here, and general instructions about how to build Cuyahoga modules can be found here.

The reason for this post is that I had a change of mind regarding Cuyahoga. Before, I thought about it just as a good application. After, I think about it as a great framework. There is very little need for me to actually do anything in the module except what I actually want, and the overall design is clean, easy to understand and easy to follow. The hardest part was doing the UI, and that is as it should be.

But I do wonder about the name, why Cuyahoga?



Cuyahoga (river)

"the river which caught fire"

Martijn Boland

Thanks for the kind words :)

About the name: the previous commenter is right: it's about the river that caught fire, but R.E.M. had to write a song about it before I knew about that. Unfortunately there is no deep philosophy behind it. I just happened to like the name. BTW, it's also fun hearing people struggle with the pronunciation. Not everybody seems to know the song :)



any further movement on 2.0 ?

Chris Cyvas

Being from Cleveland - where the river caught fire, I thought for sure, when I found the Cuyahoga CMS that it was written by someone else from Cleveland. When I saw Martijn's name on it, I knew he wasn't from Cleveland.

I subsequently used Cuyahoga as the model for a few CMS's I have built, including the one in dashCommerce.

It's a clean, solid model and, as you point out, very easily extended for whatever content widget you can think of. Glad to see it's getting some props from others. :)

Martijn Boland

@jbland: yes, I've finally got some time to pick up the 2.0 stuff. You can expect some news in the coming weeks.

Gauthier Segay

"The hardest part was doing the UI"

and the hardest part is the sole that you documented in the code (and that is as it should be):

BindUrl();// I HATE WebForms

Ayende Rahien

That was when I realized that I need to to overcome stupid stateful model in the app.


Snake River

Paul Cowan

It always struck me as strange there were no unit tests in Cuyahoga.

That is my only criticism. I learnt a lot of my NH, IOC stuff from the project.

Hats off


I tried N2Cms (n2cms.com) it uses NHibernate and Castle Windsor and is very easy to setup and works quite nicely basically it manages the Admin side of things and the structure of the site and you have to create the View to display the info. But you do have to inherit from ContentItem and add attributes

Comment preview

Comments have been closed on this topic.


  1. How to waste CPU and kill your disk by scaling 100 million inefficiently - 9 hours from now
  2. RavenDB Conference 2016–Slides - about one day from now

There are posts all the way to Jun 01, 2016


  1. The design of RavenDB 4.0 (14):
    26 May 2016 - The client side
  2. RavenDB 3.5 whirl wind tour (14):
    25 May 2016 - Got anything to declare, ya smuggler?
  3. Tasks for the new comer (2):
    15 Apr 2016 - Quartz.NET with RavenDB
  4. Code through the looking glass (5):
    18 Mar 2016 - And a linear search to rule them
  5. Find the bug (8):
    29 Feb 2016 - When you can't rely on your own identity
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats