# Доменные модули Level 1 > Пояснение базовой модели предметных областей без обязательной внутренней архитектуры. ## Связанные правила - [`SLM-L1-DOMAIN-R015`](../rules/level-1.md#slm-l1-domain-r015) - [`SLM-L1-MODULE-A004`](../rules/level-1.md#slm-l1-module-a004) - [`SLM-L1-MODULE-R006`](../rules/level-1.md#slm-l1-module-r006) - [`SLM-L1-GROUP-R007`](../rules/level-1.md#slm-l1-group-r007) ## Один домен, один модуль Связная предметная область получает один доменный модуль. Level 1 не требует выделять business, adapters, presets или framework bindings в самостоятельные соседние модули. ```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/ # Доменный модуль │ └── orders/ # Доменный модуль └── cabinet/ # Group └── profile/ # Доменный модуль ``` Group не имеет `index.ts`, реализации, состояния или публичного API. Она не создаёт dependency boundary и не реэкспортирует содержащиеся в ней домены. ## Переход на Level 2 Доменный модуль переводится в доменный пакет Level 2, когда ему нужны устойчивый `DomainApi`, одна фабрика, несколько сред выполнения или независимые SLM-модули сборок и framework-интеграции. Такой переход изменяет структурную границу: корневой доменный модуль исчезает, а его предметная ответственность переходит обязательному модулю `business` внутри доменного пакета.