# Frontend: правила кодирования

## TypeScript
- `any` запрещён по умолчанию (только локально и с обоснованием).
- Типы для API/DTO не смешивать с “UI моделями”: делайте явные маппинги/кастеры.
- Проверки “на всякий случай” и runtime-cast без валидации запрещены; если данные ненадёжны — добавляйте явный parser/validator.

## Vue компоненты
- Компоненты: “глупые” UI (presentational) отделять от “умных” (container), где есть запросы и state.
- SFC:
  - один компонент = один файл;
  - props/emits типизированы;
  - side-effects (HTTP) не в `setup()` напрямую, а через store/actions/feature services.
- Имена:
  - компоненты `PascalCase`,
  - composables `useX`,
  - файлы/папки — `kebab-case` (кроме компонентов).

## Импорты и зависимости
- Запрещены циклические зависимости между фичами/страницами.
- `shared/*` не импортирует `pages/*` и `features/*`.
- `features/*` не импортируют `pages/*`.

## Комментарии
- Комментарии только там, где нужен “почему/зачем/ограничение”, а не “что делает строка”.
- TODO/FIXME только с причиной и ссылкой на задачу (если есть).
