Учебный проект фронтенда футуристической бургерной. Я пошёл сильно дальше учебного брифа. В работе использовал самые новые инструменты и подходы. Макет figma
video.mp4
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
💥 Использовал Data API
React router v6.4 для загрузки данных на уровне роутера, а не на уровне компонентов. Это
освобождает компонент от обслуживания загрузки и отслеживания состояния. Компонент начинает сразу же
рендериться, все данные ему предоставляет роутер. И это ускоряет загрузку для вложенных роутов.
💥 TanStack Query (бывший React Query) для асинхронного
стейт менеджмента загружаемых данных на уровне роутера. Он оказался прозрачнее, чем Redux Toolkit
Query при использовании с Data API роутера.
💥 Redux только для синхронного стейт менеджмента - для обслуживания корзины
💥 Впервые опробовал архитектурную методологию проектирования фронтеда FSD. Очень вдохновил подход по структуризации проекта. Стало сильно понятнее, где что искать, когда проект стал большим. У ребят вышел линтер по методологии, который ещё не успел опробовать.
💥 К проекту была
библиотека компонентов,
но меня она не устроила гибкостью и семантичностью вёрстки. Поэтому все компоненты пересобрал сам,
используя лучшую семантику. Например, компонент Tab был свёрстан через простой <div>, но лучшая
практика - это <button> для лучшей доступности.
💥 Поработал с i18n. Использовал пакеты i18next, i18next-browser-languagedetector и
i18next-http-backend. Но не успел вывести смену языка фронтенда на кнопку. Пока работает только
как квери запрос. Переводы приходят в виде json файла Доступа к бэкенду не было, поэтому
локализовать ингредиенты не вышло, но знаю, как сделать это на стороне сервера. Есть опыт.
i18n.mp4
💥 Использую Zod и React Hook Form
для валидации и отправки форм. Мощные и гибкие инструменты. React Hook Form понравился больше, чем
Formic.
react-hook-form.mp4
💥 Попробовал современный пакет для Drag & Drop dnd kit. Много
настроек, красивый визуал получается.
- Добавить отдельное приложение для мобильной версии, потому что вёрстка очень сильно оличается. Дотюнить тач скрин Drag & drop.
- Создать монорепозиторий на основе
Nx, чтобы вынести общие типы и компоненты в отдельные пакеты и переиспользовать в приложениях. - Внедрить линтер FSD и дотюнить структуру проекта.
- Внедрить
Storybookдля библиотеки компонентов - Внедрить
Cypress Component Testingдля тестирования и разработки компонентов
git clone git@github.com:gvozdenkov/space-food.git
cd space-food
cp .env.example .env
docker compose -f compose.dev.yaml up --build
# or with Makefile
make run-dev
# view app on http://localhost:8081/
# create a new branch, commit in it and then create PR to main- React with TS
- Redux (for local state management)
- TanStack (for server state management)
- React router v6 (new features: actions and loaders)
- React hook form and Zod to control forms
- SCSS






