FaimlyT.DDD.NetFramework 3.0.0

dotnet add package FaimlyT.DDD.NetFramework --version 3.0.0
                    
NuGet\Install-Package FaimlyT.DDD.NetFramework -Version 3.0.0
                    
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="FaimlyT.DDD.NetFramework" Version="3.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FaimlyT.DDD.NetFramework" Version="3.0.0" />
                    
Directory.Packages.props
<PackageReference Include="FaimlyT.DDD.NetFramework" />
                    
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 FaimlyT.DDD.NetFramework --version 3.0.0
                    
#r "nuget: FaimlyT.DDD.NetFramework, 3.0.0"
                    
#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 FaimlyT.DDD.NetFramework@3.0.0
                    
#: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=FaimlyT.DDD.NetFramework&version=3.0.0
                    
Install as a Cake Addin
#tool nuget:?package=FaimlyT.DDD.NetFramework&version=3.0.0
                    
Install as a Cake Tool

FaimlyT.DDD

The Faimly-T DDD tactical framework, published as public NuGet packages on nuget.org (ADR-050). This repo owns the framework source, its tests, and the release pipeline; consuming applications (e.g. tmpl-backend-client-dotnet) reference the packages — never this source directly.

Package What's inside
FaimlyT.DDD.NetFramework Entity / Aggregate / ValueObject base objects, EventStream journal (state-persisted + event journal, ADR-001), typed domain events + publisher/subscriber contracts, Repository & Specification abstractions (QueryConstraint), State pattern, DomainException catalog, the self-describing use-case dispatcher (Validate → Authorize → Handle) with FluentValidation
FaimlyT.DDD.NetFramework.DataAccess.Cosmos Azure Cosmos DB (SQL API) persistence: DTO anti-corruption layer, collection repositories (etag concurrency, paging), parameterized QueryConstraint → QueryDefinition bridge, durable event-journal store. Depends on the core package

Both target net10.0.

Consuming the packages

The packages are public on nuget.org — no authentication, no credentials, no setup. A consumer repo's nuget.config declares the single anonymous source https://api.nuget.org/v3/index.json (see the template repo for the canonical example); a clean machine and CI both restore with zero secrets.

Older versions (≤ 3.0.0) also exist on the retired Faimly-T GitHub Packages feed; nothing references that feed anymore, and it must not be reintroduced (ADR-050).

Releasing a new version

  1. Merge to main (CI builds, tests, and pack-smokes every push/PR).

  2. Tag and push:

    git tag v3.0.1 && git push origin v3.0.1
    

    release.yml builds, tests, packs with Version=3.0.1 (from the tag), and pushes both packages to nuget.org via Trusted Publishing — the workflow's OIDC identity is exchanged for a short-lived push key (NuGet/login), so no publish secret is stored anywhere. The authorizing policy lives on nuget.org (Package Owner MaxRodriguez, repo Faimly-T/DDD-Template-Nuget, workflow release.yml). The workflow can also be run manually (Actions → release → Run workflow) with an explicit version, e.g. to publish a version whose tag already exists.

Versioning is SemVer by hand: major for any breaking change to the public API (renames included — consumers fossilize names), minor for additive API, patch for fixes. nuget.org versions are immutable (unlist, never delete) — a botched release means a new patch tag.

Developing against the template

The template repo has a UseLocalDdd switch that flips its FaimlyT.DDD.* PackageReferences to ProjectReferences into a local checkout of this repo:

dotnet build -p:UseLocalDdd=true   # in the template repo, with this repo checked out locally

Iterate here with live source debugging, and only tag a release when the change is done. CI in the template never uses the switch, so the real package path is always what's validated.

Layout

src/FaimlyT.DDD.NetFramework/                      Core tactical framework
src/FaimlyT.DDD.NetFramework.DataAccess.Cosmos/    Cosmos SQL persistence
test/FaimlyT.DDD.Tests/                            xUnit suite (in-memory, no infra needed)
docs/                                              ADR-001 + the pre-publish quality review

Framework tests that depend on the template's sample domain (ExampleReferenceDDD) intentionally stayed in the template repo (test/Test.UseCases/TestDDDFramework/).

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on FaimlyT.DDD.NetFramework:

Package Downloads
FaimlyT.DDD.NetFramework.DataAccess.Cosmos

Azure Cosmos DB (SQL API) persistence for the FaimlyT DDD framework: DTO anti-corruption layer (AggregateCosmosDTO/ToAggregate), collection repositories with etag concurrency and paging, the parameterized QueryConstraint → QueryDefinition bridge, and the durable domain-event journal store (state-persisted + event journal, ADR-001 — never replay).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.0 374 8/13/2026
2.2.1 337 7/23/2024
2.2.0 220 7/19/2024
2.1.2 304 6/24/2024
2.1.1 238 6/24/2024
2.1.0 247 6/24/2024
2.0.0 259 6/23/2024
1.2.1 234 6/23/2024
1.0.0 241 6/23/2024