HorsesForCourses 0.0.3-preview

This is a prerelease version of HorsesForCourses.
dotnet add package HorsesForCourses --version 0.0.3-preview
                    
NuGet\Install-Package HorsesForCourses -Version 0.0.3-preview
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HorsesForCourses" Version="0.0.3-preview">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="HorsesForCourses" Version="0.0.3-preview" />
                    
Directory.Packages.props
<PackageReference Include="HorsesForCourses">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add HorsesForCourses --version 0.0.3-preview
                    
#r "nuget: HorsesForCourses, 0.0.3-preview"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package HorsesForCourses@0.0.3-preview
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=HorsesForCourses&version=0.0.3-preview&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=HorsesForCourses&version=0.0.3-preview&prerelease
                    
Install as a Cake Tool

HorsesForCourses

It's Only a Model

HorsesForCourses is a tiny, opinionated DDD reference domain you can use as a SUT for examples, demos, tests, and documentation.

  • Ships as a binary package (DLL)
  • Marked development-only
  • Not for production use

Why

Spinning up a real DDD domain for every demo is busywork. Trivial Person/OrderLine examples are too anemic to be interesting. This package gives you a "good enough" domain with value objects, aggregates, and generic identities so you can focus on the thing you're actually building or explaining.

The model looks small, but it hides just enough complexity to stay interesting.

See also: Domain Requirements.

Its most deceptively simple rule: 'a coach can only be assigned if they're available', quickly becomes tricky once you imagine thousands of coaches and courses. How do you efficiently ask, "Who's free next Thursday at 10?", without scanning the whole database?

It also contains a tiny inconsistency you might not notice at first glance.
A missing guard that lets something slip through the cracks.
Can you spot it?

Installation

Reference the pre-release package from your test or examples project:

<ItemGroup>
  <PackageReference Include="HorsesForCourses" Version="0.0.1-preview" PrivateAssets="all" />
</ItemGroup>
  • PrivateAssets=all keeps the reference local to your project and prevents transitively exposing it if you pack your project.

License

This project is licensed under the MIT License.

Disclaimer

This package is for development and educational purposes only. Do not ship it to production. It's only a model.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.3-preview 91 3/10/2026
0.0.1-preview 347 11/3/2025