Клонируем репозиторий
Устанавливаем зависимости
npm install
Запускаем проект
npm run dev
Для реализации логинизации использую портал. Пользователь вводит логин и пароль, нажимает на кнопку, идет логинизация. Если происходит ошибка, данные перезапрашиваются, так как сервак в любом случае нам должен вернуть положительный ответ (пустые данные не отпарвляю(предусмотрена валидации форм), то есть, если пользователь нажимает на кнопку войти, запрос на бек не идет и пустое(-ые) поле(-я) подсвечиваются красным) Повторный запрос все-таки лучше не делать, но раз наш сервак так работает, то ладно. После успешный авторизации сохраняю токен в localStorage в объект user. Реализовала через thunk.
По клику на кнопку выйти удаляю из localStorage объект user с токеном.
При инициализации приложения проверяю, лежит ли токен в localStorage, если да, то мы получается авторизованы) Логика проверки токена лежит в useEffect, скорее всего можно было бы сделать это в другом месте, например в thunk.
Фильтры и поисковая строка реализованы вместе с пагинацией. Данные с инпута и фильтров синхронизируются с поисковой строкой в качетсве query параметров. Можно
//: # ()
//: # ()
//: # ()
//: # ()
//: # ()