2026-07-24 22:34:49 +03:00
---
title: Слой App
status: draft
normative: true
---
# Слой App
`app` является boundary между framework routing/runtime и SLM-модулями приложения.
## Ответственность
`app` может содержать:
- route files;
- framework layout/error/loading/not-found entries;
- framework metadata и route parameters;
- bootstrap imports;
- подключение global styles/assets;
- framework-required middleware и handlers.
## Правила
2026-07-25 17:56:16 +03:00
**SLM-BASE-APP-001 - ОБЯЗАН.** Route entry должен оставаться тонким adapter, нормализующим framework input и делегирующим готовому composition module.
2026-07-24 22:34:49 +03:00
```text
framework route
→ composition entry
```
2026-07-25 17:56:16 +03:00
**SLM-BASE-APP-002 - ЗАПРЕЩЕНО.** `app` не может владеть product page, screen, widget, product scenario, store или application wiring.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-APP-003 - ЗАПРЕЩЕНО.** Route entry не должен напрямую собирать product integrations, вызывать SDK или формировать product model.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-APP-004 - ОБЯЗАН.** Framework-specific input должен быть считан в `app` и передан вниз в минимальной нормализованной форме.
2026-07-24 22:34:49 +03:00
2026-07-25 15:49:31 +03:00
Механическая нормализация включает извлечение route params, headers и framework wrappers. Product validation, создание value objects и выбор product outcome остаются у владельца product semantics.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
Запрет другим SLM-слоям импортировать `app` определяется base-правилом `SLM-BASE-ARCH-003` .
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-APP-006 - СЛЕДУЕТ.** Framework behavior, которому нужны product dependencies или product UI, следует реализовать готовым composition entry и только подключить из `app` .
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-APP-007 - МОЖЕТ.** `app` может напрямую импортировать framework APIs и static/global resources из `shared` , если framework требует подключить их в root entry.
2026-07-24 22:34:49 +03:00
## Допустимая структура
Структуру `app` определяет framework. SLM не требует превращать framework directories в SLM modules и не требует `index.ts` для route folders.
```text
app/
├── layout.tsx
├── error.tsx
├── not-found.tsx
├── api/
└── products/
└── [product]/
└── page.tsx
```
2026-07-25 15:49:31 +03:00
## Примеры нарушений
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
Следующие сущности являются примерами нарушений `SLM-BASE-APP-002` и `SLM-BASE-APP-003` :
2026-07-24 22:34:49 +03:00
- `ProductPage` ;
2026-07-25 15:49:31 +03:00
- product Provider;
- application service creator;
2026-07-24 22:34:49 +03:00
- page-local store;
2026-07-25 15:49:31 +03:00
- product mapper;
2026-07-24 22:34:49 +03:00
- reusable product component;
2026-07-25 15:49:31 +03:00
- concrete product integration.