# DDDToolkit > Source generators that remove the repetitive parts of domain driven design in .NET. You declare the intent with an attribute; the generator writes the base type, the equality members, the identifier plumbing, the persistence mapping and the API conversions. Every page below is Markdown at the address given, and [llms-full.txt](https://dylansnel.github.io/DDDToolkit/llms-full.txt) holds all of them in one file, in this order. Build errors whose id starts with DDD come from the toolkit's generators and analyzers; [Diagnostics](https://dylansnel.github.io/DDDToolkit/docs/diagnostics.md) says what each one means and how to fix it. An AI coding agent can also install the [DDDToolkit skill](https://github.com/DylanSnel/DDDToolkit/tree/main/skills/dddtoolkit), which carries the rules that matter most while writing code. ## Start here - [Getting started](https://dylansnel.github.io/DDDToolkit/docs/getting-started.md): One module built step by step: an id, a value object, an aggregate, a test, a database, a second module - [What the generator writes](https://dylansnel.github.io/DDDToolkit/docs/generated-code.md): The generated code for one small aggregate, file by file, and why it is generated ## Building blocks - [Identifiers](https://dylansnel.github.io/DDDToolkit/docs/identifiers.md): `[EntityId]`, struct versus record ids, parsing, prefixes - [Value objects](https://dylansnel.github.io/DDDToolkit/docs/value-objects.md): `[ValueObject]`, `[SingleValueObject]`, validation and the always-valid twin - [Entities and aggregates](https://dylansnel.github.io/DDDToolkit/docs/entities-and-aggregates.md): `[Entity]`, `[AggregateRoot]`, child entities, read-only collections, referencing by id - [Invariants](https://dylansnel.github.io/DDDToolkit/docs/invariants.md): Named `IInvariant` rules and the `CheckInvariants()` seam, the two stages, and the save that runs them - [Domain events](https://dylansnel.github.io/DDDToolkit/docs/domain-events.md): Declaring, raising and draining events, and their stable names - [Designing aggregates](https://dylansnel.github.io/DDDToolkit/docs/aggregate-design.md): The four rules of aggregate design, and how the toolkit holds each one - [Testing aggregates](https://dylansnel.github.io/DDDToolkit/docs/testing.md): The aggregate testing kit: acting on an aggregate and asserting on what it raised ## Persistence - [Entity Framework](https://dylansnel.github.io/DDDToolkit/docs/entity-framework.md): Wiring, the generated converters, mapping, concurrency and migrations - [Composite keys](https://dylansnel.github.io/DDDToolkit/docs/composite-keys.md): `[KeyPart]`: keying a table on more than the id, and carrying that into every owned table - [Delivering domain events](https://dylansnel.github.io/DDDToolkit/docs/event-delivery.md): In-process dispatch or the outbox, and how to choose - [Row level security](https://dylansnel.github.io/DDDToolkit/docs/row-level-security.md): Running a context's queries as the caller, and row access rules written in C# as Postgres policies - [Supabase](https://dylansnel.github.io/DDDToolkit/docs/supabase.md): Exporting each module's migrations for `supabase db push`, as part of the build ## Modules and messaging - [Modules](https://dylansnel.github.io/DDDToolkit/docs/modules.md): `[assembly: Module]` and the boundary the analyzer checks - [Module contracts](https://dylansnel.github.io/DDDToolkit/docs/module-contracts.md): What a module publishes, why, and where to keep it - [Integration events](https://dylansnel.github.io/DDDToolkit/docs/integration-events.md): Contracts between modules, the outbox and the inbox, versioning - [Transports](https://dylansnel.github.io/DDDToolkit/docs/transports.md): Carrying integration events out of the process: pgmq, Wolverine, MassTransit, or a sink of your own ## Integrations - [GraphQL](https://dylansnel.github.io/DDDToolkit/docs/graphql.md): `AddDDDToolkitTypes()`, the generated scalar bindings, errors with codes, Relay node ids, one schema over the modules - [FluentValidation](https://dylansnel.github.io/DDDToolkit/docs/fluent-validation.md): A value object's rules as a FluentValidation validator, and value objects inside a request validator - [Localization](https://dylansnel.github.io/DDDToolkit/docs/localization.md): Validation errors and invariant violations in the reader's language, looked up by code ## Reference - [Diagnostics](https://dylansnel.github.io/DDDToolkit/docs/diagnostics.md): Every DDD000xx diagnostic and how to fix it - [Performance](https://dylansnel.github.io/DDDToolkit/docs/performance.md): The benchmarks behind the struct-versus-record advice, including where they disagree with it - [Migrating to 3.0](https://dylansnel.github.io/DDDToolkit/docs/migrating-to-3.md): Every 2.x break, with the before and the after