# Модули слоя domains > Пояснение размещения предметных ответственностей в обычных SLM-модулях. ## Связанные правила - [`SLM-MODULE-A004`](../rules/registry.md#slm-module-a004) - [`SLM-MODULE-R006`](../rules/registry.md#slm-module-r006) - [`SLM-GROUP-R007`](../rules/registry.md#slm-group-r007) - [`SLM-LAYER-R001`](../rules/registry.md#slm-layer-r001) ## Обычные модули SLM Модуль слоя `domains` является обычным SLM-модулем. Он отличается от модулей других слоёв только предметной ответственностью, а не отдельной архитектурной сущностью или обязательной файловой формой. ```text domains/auth/ ├── hooks/ ├── services/ ├── stores/ ├── types/ ├── ui/ └── index.ts ``` Показанные каталоги являются возможными сегментами, а не обязательным каркасом. Модуль может содержать предметные типы, сценарии, состояние, framework-код, компоненты и вложенные модули. ## Публичный API Внешний код использует модуль через его обычный публичный API: ```ts import { signOut, useSession } from '@/domains/auth' ``` Глубокий импорт во внутренний сегмент нарушает модульную границу: ```ts import { useSession } from '@/domains/auth/hooks/use-session' ``` ## Groups При большом количестве модулей слой `domains` может содержать обычные навигационные Groups: ```text domains/ ├── shop/ # Group │ ├── catalog/ # SLM-модуль │ └── orders/ # SLM-модуль └── cabinet/ # Group └── profile/ # SLM-модуль ``` Group не имеет `index.ts`, реализации, состояния или публичного API. Она не создаёт dependency boundary и не реэкспортирует содержащиеся в ней модули. ## Среды выполнения Если части публичного API модуля предназначены для разных сред выполнения, модуль сохраняет одну ответственность и разделяет доступ фасетами `client`, `browser` и `server`.