Appearance
Назначение data
data владеет данными приложения и правилами их преобразования.
Полный стек
Core не задаёт конкретный transport. Его реализация для принятого проектного стека описана отдельно в Full Stack Guide.
Что принадлежит data
Для домена posts здесь могут находиться:
- Valibot schemas внешних данных;
- DTO, полученные из schemas;
- mappers;
- типы приложения;
- MobX stores;
- public API slice.
txt
data/posts/
posts.schema.ts
posts.dto.ts
posts.mapper.ts
posts.store.ts
posts.types.ts
index.tsЧто не принадлежит data
data не должен знать:
- как выглядит React-страница;
- какой route сейчас открыт;
- куда выполнить navigation;
- как устроена форма в JSX;
- как отображается ошибка пользователю.
Это ответственность React-слоя.
Поток записи во внешний источник
Если форма создаёт или редактирует пост:
txt
React Hook Form values
↓
mapper
↓
request DTO
↓
внешняя границаСпособ отправки request не задаётся DSA.
Поток чтения
txt
unknown
↓ Valibot
DTO
↓ mapper
тип приложения
↓
MobX store
↓
ReactНапример, внешний контракт может использовать published_at, а приложение — publishedAt: Date. Это различие локализуется внутри data/posts.
Правило минимальности
Не каждый slice обязан иметь все возможные файлы.
Если данные уже имеют удобную форму, mapper может не понадобиться. Если нет store-состояния, не создавайте пустой store ради структуры.
Добавляйте роль только тогда, когда она решает реальную задачу.