npm install - устанавливаем зависимости
npm run start:dev или npm run start:dev:vite - запуск сервера + frontend проекта в dev режиме
Логин для теста: admin
Пароль для теста: 123
Логин для теста2: user
Пароль для теста2: user
Логин для теста3: test
Пароль для теста3: test
npm run start
- Запуск frontend проекта на webpack dev servernpm run start:vite
- Запуск frontend проекта на vitenpm run start:dev
- Запуск frontend проекта на webpack dev server + backendnpm run start:dev:vite
- Запуск frontend проекта на vite + backendnpm run start:dev:server
- Запуск backend сервераnpm run build:prod
- Сборка в prod режимеnpm run build:dev
- Сборка в dev режиме (не минимизирован)npm run unit
- Запуск unit тестов с jestnpm run generate:slice
- Скрипт для генерации FSD слайсов
Проект написан в соответствии с методологией Feature sliced design
Ссылка на документацию - feature sliced design
В проекте используется библиотека i18next для работы с переводами. Файлы с переводами хранятся в public/locales.
Для комфортной работы рекомендуем установить плагин для webstorm/vscode
Документация i18next - https://react.i18next.com/
В проекте используются 2 вида тестов:
- Обычные unit тесты на jest -
npm run test:unit
- Тесты на компоненты с React testing library -
npm run test:unit
- e2e тестирование с Cypress
npm run test:e2e
Подробнее о тестах - документация тестирование
Для разработки проект содержит 2 конфига:
- Webpack - ./config/build
- vite - vite.config.ts
Оба сборщика адаптированы под основные фичи приложения.
Вся конфигурация хранится в /config
- /config/babel - babel
- /config/build - конфигурация webpack
- /config/jest - конфигурация тестовой среды
В папке scripts
находятся различные скрипты для рефакторинга\упрощения написания кода\генерации отчетов и тд.
Конфигурация github actions находится в /.github/workflows. В ci прогоняются все виды тестов, сборка проекта
Взаимодействие с данными осуществляется с помощью redux toolkit. По возможности переиспользуемые сущности необходимо нормализовать с помощью EntityAdapter
Запросы на сервер отправляются с помощью RTK query
Для асинхронного подключения редюсеров (чтобы не тянуть их в общий бандл) используется DynamicModuleLoader
Разрешено использовать feature flags только с помощью хелпера toggleFeatures
в него передается объект с опциями
{ name: название feature-flag, on: функция, которая работает после Включения фичи, off: функция, которая работает после Выключения фичи }
Для автоматического удаления фичи использовать скрипт remove-feature.ts, который принимает 2 аргумента:
- Название удаляемого feature-flag
- Состояние (on/off)
- addCommentForm
- articleEditButton
- articlePageGreeting
- articleRating
- profileRating
- articleRecommendationsList
- articleSortSelector
- articleViewSelector
- articleTypeTabs
- authByUsername
- avatarDropdown
- backToArticlesButton
- editableProfileCard
- langSwitcher
- notificationButton
- themeSwitcher
- scrollToTopButton
- uiDesignSwitcher
- moviesCountryTabs
- moviesGenreTabs
- moviesSortSelector