1.9 KiB
1.9 KiB
Conventions
Must
- Использовать Biome:
npm run lint; табы и двойные кавычки определяетbiome.json. - Для type-only импортов использовать
import type; не использоватьenumиnamespace. - UI-строки хранить в
src/shared/i18n/locales/ru.tsи получать черезuseTranslation(). - Zod-схемы не содержат пользовательских строк: использовать
validationMessage(key)изsrc/shared/i18n/zod.ts. - Публичный импорт слайса идёт через его
index.ts. - Тесты лежат рядом с исходником как
*.test.tsx. - Зависимости используют exact versions; не добавлять semver ranges.
- Полный локальный gate:
npm run verify. Pre-commit запускает staged formatting, OpenAPI check и FSD dependency checks; commit message должен следовать Conventional Commits.
File roles
Component.tsx- контейнер или публичный компонент; для data-driven pages вызывает page VM hook и выбирает top-level state view.Component.vm.ts- hook с данными, действиями, state selection и derived presentation data.Component.view.tsx- чистое представление: получает props, рендерит JSX и не вызывает data/auth/router/navigation/VM hooks.Component.types.ts- props и локальные типы.Component.module.css- локальные стили.
Большие view files дробить по ответственности. Если section/state можно самостоятельно назвать, вынести его в соседний presentation component вместо накопления смысловой нагрузки в одном файле.