Строгие семантические соглашения, предназначенные для устранения двусмысленности и технического долга через статический анализ.
Преимущества: Единообразие имен упрощает навигацию, а автоматические проверки линтера предотвращают накопление архитектурного долга.
Повсеместно используется kebab-case. Исключения: хуки (префикс use), служебные файлы (формат entity.type.ts) и стандартные файлы Next.js.
1// kebab-case и семантические расширения
2src/entities/tour/schema/finance-info.schema.ts
3src/entities/tour/api/tour.service.ts
4src/entities/tour/converters/tour.converters.ts
5src/entities/tour/handlers/tour.handlers.ts
6src/entities/tour/mock/tour-finance.mock.ts
7src/entities/tour/constants/tour-status.config.tsИнтерфейсы — префикс I, типы — префикс T, перечисления — префикс ENUM_. Компоненты — PascalCase.
1// Префиксы для типов и интерфейсов
2interface IEntity { ... }
3type TResponse = { ... }
4const ENUM_STATUS = { ... } as const;Классическая иерархия слоев: shared — самый нижний, app — самый верхний. Импорты 'снизу вверх' или между элементами одного слоя (кроме shared) строго запрещены.
1// FSD Import Boundaries (Classic)
2app -> [pages, widgets, features, entities, shared]
3pages -> [widgets, features, entities, shared]
4widgets -> [features, entities, shared]
5features -> [entities, shared]
6entities -> [shared]
7shared -> []Специфические исключения для внешних библиотек (shadcn-ui), деклараций типов (.d.ts) и системных конфигураций, где строгий нейминг может мешать работе.
1// Проектные послабления (Relaxations)
2// 1. Shared UI (shadcn-ui/custom): любые имена, разрешен any
3src/shared/ui/shadcn-ui/Button.tsx
4
5// 2. Декларации (.d.ts): именование не контролируется
6src/shared/types/api.d.ts
7
8// 3. Конфиги (*.config.ts): разрешены require и console
9tailwind.config.ts