Cargo freighter passing under the Golden Gate bridge in San Fransisco. Image courtesy of FreeFoto.com.
One of the most requested aids to coming up to speed on DDD has been a running example application. Starting from a simple set of functions and a model based on the cargo example used in Eric Evans' book, we have built a running application with which to demonstrate a practical implementation of the building block patterns as well as illustrate the impact of aggregates and bounded contexts.
Our sample does not show *the* way to do it, but a decent way. Eventually, the same design could be reimplemented on various popular platforms, to give the same assistance to people working on those platforms, and also help those who must transition between the platforms.
Variations could show trade-offs of alternative approaches, helping the community to clarify and refine best practices for building DDD applications.
There's a lot of interest in new tools or frameworks for DDD.
Reimplementing the sample app using a new platform will give a side-by-side comparison with the "conventional" implementation, which can demonstrate the value of the new platform and provide validation or other feedback to the developers of the platform.
Domain-driven design is a very broad topic, and contains lots of things that are difficult or impossible to incorporate into the code base of a sample application. Perhaps most important is communication with the domain expert, iterative modelling and the discovery of a ubiquitous language. This application is a snapshot in time, the result of a development effort that you need to imagine has been utilizing domain-driven design, to show how one can structure an application around an isolated, rich domain model in a realistic environment.