# Layers

1. Domain Layer
   * Core components of the system
   * Provide the implementation for the business rules and processes.
2. Application Layer
   * Coordinates the use of the entities and domain services to implement the use cases (referring to business use cases).
   * This layer contains the application services, which are responsible for handling requests from the infrastructure layer, coordinating the use of the entities and domain services, and returning a response to the client.
3. Infrastructure Layer:
   * Implements the technical details, such as persistence (e.g. database), messaging, and external integration.
   * Acts as a bridge between the domain and application layers and the external world.

By having these layers separated, it should be easier to make a change in one layer without affecting other layer. This way, the code should also be easier to understand and maintain over time.
