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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://note.levelcode.org/software-engineering-notes/readme/5-layers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
