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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
