Gravyframe

For the last few months I have been working on a boilerplate and example of how I think a website should be built on top of a .NET CMS. The basic idea is to abstract away the underlining CMS treating it as a detail not part of the core solution.
This separation from the CMS is achieved by the use of contracts between the different layers of the system. At runtime different implementations are injected into the system by an IoC container.
Imagine we are working on two websites, they have the exact same requirements. One is on top of Umbraco and the other is on top of Sitecore. The two sites would have different implementations of the same requirements. It is my hope that Gravyframe will encourage and facilitate maximum reuse of code; first by only having to inject different data access into our examples and two the reuse of the implementation on the next project for that flavour of CMS.
This idea is not new however Gravyframe is my attempt to give example of a well-tested website that runs on top of a CMS. Over the next few months as I get more and more functionality written I will be posting on different things that I have encountered.
Currently I only have an example on top of Umbraco, but plan to build implementations for Sitecore and EPiServer.
Check out the source here.