# Principles

- [Domain-Driven Design](/principles/domain-driven-design.md)
- [Aggregates](/principles/domain-driven-design/aggregates.md): An Aggregate is a cluster of domain objects that are treated as a single unit with regards to data changes.
- [Entities](/principles/domain-driven-design/entities.md): Entities are uniquely identifiable by a combination of one or more attributes or properties
- [Value Objects](/principles/domain-driven-design/value-objects.md)
- [Domain Events](/principles/domain-driven-design/domain-events.md): Domain Events are an integral part of Domain-Driven Design and are used to communicate changes and trigger side-effects within the domain model.
- [Factories](/principles/domain-driven-design/factories.md)
- [Domain Services](/principles/domain-driven-design/domain-services.md)
- [Business Identifiers](/principles/domain-driven-design/business-identifiers.md)
- [Shared Kernel](/principles/domain-driven-design/shared-kernel.md)
- [Onion Architecture](/principles/onion-architecture.md)
- [Application Layer](/principles/onion-architecture/application-layer.md)
- [Domain Layer](/principles/onion-architecture/domain-layer.md)
- [Infrastructure Layer](/principles/onion-architecture/infrastructure-layer.md)
- [Anti-Corruption Layer](/principles/onion-architecture/anti-corruption-layer.md)
- [Modular Monolith Architecture](/principles/modular-monolith-architecture.md)
- [Modules](/principles/modular-monolith-architecture/modules.md)
- [Shared Infrastructure](/principles/modular-monolith-architecture/shared-infrastructure.md)
- [Microservice Architecture](/principles/microservice-architecture.md)
- [API Gateway](/principles/microservice-architecture/api-gateway.md)
- [View Model Composition](/principles/microservice-architecture/view-model-composition.md)
- [Contracts](/principles/microservice-architecture/contracts.md)
