- install ky, zustand, @mui/material, @fontsource/roboto, dayjs, clsx - install @tanstack/react-table, react-hook-form, zod, @hookform/resolvers - create kyClient.ts with auth interceptors - create Zustand store for session (useSessionStore.ts) - add MUI theming (theme.ts, ThemeProvider in AppProviders) - add dayjs utils with ru locale (formatDate, formatRelative) - add clsx cn() utility - add base Table component using @tanstack/react-table - create ADR-015 documenting architectural decisions - create SDD artifacts: spec.md, plan.md, tasks.md - build, lint, and 111 tests passing
3.6 KiB
3.6 KiB
tasks.md - Фронтенд Инфраструктура - Современный стек
Общее описание
Этот документ описывает пошаговые задачи по серьёзному техническому обновлению инфраструктуры фронтенда MoexVibe — внедрение современных библиотек и паттернов. Все библиотеки установлены, инфраструктура настроена. Остаётся миграция компонентов.
Цель
Перевести фронтенд на современный стек библиотек: ky (HTTP), Zustand (state), MUI (UI), dayjs (dates), react-hook-form+zod (forms), clsx (styles), @tanstack/react-table (tables).
Базовая инфраструктура — ✅ Выполнено
Начальная подготовка
- Ветка
codex/frontend-libraries-setupсоздана изmain - Папка
docs/features/frontend-libraries/создана spec.md,plan.md,tasks.mdсозданыapps/docs/docs/adr/ADR-015-frontend-libraries-modernization.mdсоздан
Установка зависимостей
@mui/material,@emotion/react,@emotion/styled@mui/icons-materialzustandkydayjsreact-hook-form,zod,@hookform/resolversclsx@tanstack/react-table@fontsource/robotoreact-is@^18.3.1(overrides в package.json)npm run lint— чистоnpm run build— успешноnpm run test— 111/111 тестов проходят
Созданные файлы (инфраструктура)
src/shared/api/kyClient.ts— ky с интерцепторами авторизацииsrc/entities/session/model/useSessionStore.ts— Zustand store сессииsrc/app/styles/theme.ts— MUI тема с CSS-переменнымиsrc/app/providers/AppProviders.tsx— обёрнут ThemeProvider + CssBaselinesrc/shared/lib/dates/index.ts— dayjs утилиты (formatDate, formatRelative)src/shared/lib/styles/clsx.ts— функция cn()src/shared/ui/Table/Table.tsx— базовый компонент таблицы
Оставшиеся задачи — миграция компонентов
MID-приоритет (следующий спринт)
- Zustand: переписать SessionProvider на
useSessionStore, удалить ручнойuseState - MUI: преобразовать страницу логина на MUI TextField + Button
- dayjs: заменить все
new Date().toLocaleString()наformatDate()в виджетах - clsx: заменить шаблоны
className="a b" + (c && "d")наcn() - TanStack Table: переписать таблицу позиций (
PortfolioPositionsTable)
LOW-приоритет (по мере необходимости)
- Form + Zod: добавить схемы в
shared/lib/schema/, создать FormField - ky: интегрировать ky в request flow (замена
fetchнаkyApi) - MUI: полноценная реализация light/dark mode
- MUI: преобразование остальных страниц и виджетов
- CLSX: полный рефакторинг className по всему проекту
- TanStack Table: пагинация через TanStack Query