# ardalis/CleanArchitecture

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/ardalis-cleanarchitecture).**

18,291 stars · 3,064 forks · C# · MIT

## Links

- GitHub: https://github.com/ardalis/CleanArchitecture
- awesome-repositories: https://awesome-repositories.com/repository/ardalis-cleanarchitecture.md

## Topics

`architecture` `clean-architecture` `csharp` `ddd` `domain-driven-design` `dotnet` `hacktoberfest`

## Description

CleanArchitecture is a project template for ASP.NET Core designed to establish a standardized foundation for enterprise applications. It enforces architectural boundaries by separating core business logic from infrastructure and external dependencies, ensuring that the domain remains independent of technical concerns.

The project provides scaffolding that supports both multi-project solutions for complex systems and single-project vertical slices for simpler requirements. By organizing code around business entities and aggregates, it facilitates modular development where distinct parts of a system can be built, tested, and maintained independently.

The template incorporates principles such as dependency inversion, interface segregation, and inversion of control to manage object lifecycles and decouple components. This structure promotes a persistence-ignorant domain, allowing business logic to operate on plain objects without direct awareness of database schemas or data access technologies.

## Tags

### Development Tools & Productivity

- [Project Templates](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/project-scaffolding/project-templates.md) — Provides a standardized ASP.NET Core project template for building enterprise applications using clean architecture principles.
- [Project Scaffolding](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/project-scaffolding.md) — Establishes a standardized project structure that enforces architectural boundaries and promotes testability from the start.
- [Project Initializers](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/cli-tooling-frameworks/cli-tooling/project-lifecycle-orchestrators/project-initializers.md) — Provides standardized project bootstrapping for both multi-project solutions and vertical slice architectures. ([source](https://ardalis.github.io/CleanArchitecture))

### Web Development

- [Application Starter Kits](https://awesome-repositories.com/f/web-development/application-starter-kits.md) — Offers a foundational starter kit that enforces separation of concerns by isolating business logic from external dependencies.

### Data & Databases

- [Persistence-Ignorant Architectures](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/persistence-ignorant-architectures.md) — Ensures business logic operates on plain objects without direct awareness of underlying database schemas or storage technologies.

### Software Engineering & Architecture

- [Service Layers](https://awesome-repositories.com/f/software-engineering-architecture/service-layers.md) — Implements architectural layers that decouple core business logic from external infrastructure and data access concerns.
- [Domain-Driven Designs](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/abstraction-domain-modeling/domain-driven-designs.md) — Organizes code around business entities and aggregates to ensure software structure reflects the problem domain.
- [Enterprise Backend Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/backend-enterprise-systems/enterprise-backend-architectures.md) — Provides a scalable foundation for complex business applications by separating core logic from infrastructure.
- [Inversion-of-Control Containers](https://awesome-repositories.com/f/software-engineering-architecture/inversion-of-control-containers.md) — Provides a central registry for managing object lifecycles and dependency injection to decouple application components.
- [Scaffolding Generators](https://awesome-repositories.com/f/software-engineering-architecture/scaffolding-generators.md) — Automates the creation of modular project structures organized into core, infrastructure, and user interface layers.
- [Modular Application Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/application-architecture-patterns/modular-application-architectures.md) — Facilitates modular development by organizing code into decoupled components that can be built and tested independently.
- [Interface Segregation Principles](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/foundational-theory-and-guidance/software-architecture-principles/solid-principles/interface-segregation-principles.md) — Uses specific interface contracts to decouple system components and prevent unnecessary dependencies between layers.

### Education & Learning Resources

- [Vertical Slice Implementations](https://awesome-repositories.com/f/education-learning-resources/application-use-cases/vertical-slices/vertical-slice-implementations.md) — Groups related logic and dependencies into self-contained feature folders to simplify cross-cutting changes.
