uCodeFirst is a component for Umbraco that allows the definition of data types, document types and other customization artefacts in a visual studio solution (C# code) instead of the Umbraco administration back-end.

It is heavily inspired by uSiteBuilder, and aims to provide the same kind of benefits:

Put all the metadata (document types, templates, macros, etc.) into source control, allowing better sharing and collaboration inside a team and between teams

Each Umbraco development instance can have its own database, and is synchronized through source code

Leverage more of .Net by manipulating strongly-typed entities, benefiting from having compile-time checking and intellisense