--- title: Архитектура --- # Архитектура Архитектура построена на FSD (Feature‑Sliced Design) и строгих границах модулей. Цель — разделить ответственность, упростить сопровождение и контроль зависимостей. ## Принципы - Разделять UI, бизнес-логику и инфраструктуру. - Держать зависимости однонаправленными. - Открывать наружу только публичный API модулей. - Не допускать циклических зависимостей. ## Слои - **app** — инициализация приложения, роутинг, конфигурации, глобальные провайдеры. - **screens** — экраны и их композиция. - **layouts** — каркас и шаблоны страниц. - **widgets** — крупные блоки интерфейса, собирающие несколько сценариев. - **features** — отдельные пользовательские действия и сценарии. - **entities** — бизнес-сущности и их модель. - **shared** — переиспользуемая инфраструктура, утилиты и базовые UI‑компоненты. ## Правила зависимостей - Допустимые импорты идут сверху вниз: `app → screens → layouts → widgets → features → entities → shared`. - Импорты между слоями — через публичный API. - Внутри одного слоя — относительные импорты. ## Публичный API модулей - Каждый модуль экспортирует наружу только то, что нужно другим слоям. - Внешние импорты идут только через `index`‑файл модуля. - Внутренние файлы не импортируются напрямую извне. ## Границы ответственности - Бизнес‑логика не размещается в UI‑компонентах. - UI‑компоненты должны быть максимально простыми и предсказуемыми. - Связь между независимыми сценариями поднимается на уровень выше. ## Типовые ошибки - Импорт из более высокого слоя в более низкий. - Смешивание логики нескольких слоёв в одном модуле. - Прямые импорты внутренних файлов, минуя публичный API.