Skip to main content

Clean Architecture

Easy to understand, easy to maintain, and easy to extend. With a focus on shipping solutions.

Clean Architecture: Focus on solving business problems, not plumbing infrastructure when maintaining complex projects.

Context

Components

COMPONENT DEPENDENCY MATRIXComponentDependenciesBuild IssuesLayer
Contact UI Table ViewContact DTO, Contact ActionsRSC/Client separation neededUI
Contact UI Details ViewContact DTO, Contact EntityType safety validationUI
Contact UI NewContact Form, Contact ActionsForm validation integrationUI
Contact UI EditContact Form, Contact Actions, Contact DTOState management complexityUI
Contact FormContact Validator, Contact ValuesTanStack Form integrationUI
Contact DTOContact EntitySerialization boundariesApplication
Contact EntityContact SchemaDomain validationDomain
Contact ServiceContact Repository InterfaceService layer abstractionApplication
Contact ValidatorContact Schema, Contact ValuesZod schema integrationDomain
Contact ActionsContact Service, Contact DTOServer action patternsApplication
Contact ValuesContact SchemaType inferenceDomain
Contact RepositoryContact Repository Interface, Contact SchemaDatabase integrationInfrastructure
Contact Repository InterfaceContact EntityClean architecture boundariesDomain
Contact SchemaNone (Pure domain)DrizzleORM schema definitionDomain

Definition

A domain-centric approach to organising dependencies and improve maintainability. Address fear to make changes.

Projects separated by concerns:

  • UI
  • Core
  • Infrastructure

Libraries

  • DotNet
  • Automapper
  • Mediator
  • Dapper
  • Entity Framework
  • Swagger
  • NSwagStudio