> For the complete documentation index, see [llms.txt](https://note.levelcode.org/software-engineering-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://note.levelcode.org/software-engineering-notes/readme/5-layers.md).

# 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.
