RomanMitaki / shrifp

0 stars 0 forks source link

Более подробное ревью с оценками #2

Open UvO1 opened 1 week ago

UvO1 commented 1 week ago

Проделана отличная и большая работа! Здорово, что ты постарался реализовать как можно больше функционала. Отмечу правильное применение svg в проекте, выделение глобальных css в переменные, хорошую архитектуру (деление на сервисы, страницы, утилиты, компоненты). Далее мои оценки в соответствие с критериями:

Базовые требования:

Критерий Макс. Моя оценка Комментарий
Создан github-репозиторий, в нём есть README, gitignore, установлены все необходимые зависимости 5 баллов. 5
Проект запускается 5 баллов. 5
Вёрстка соответствует дизайн-макетам (допускаются минимальные отхождения, адаптив не требуется) 5 баллов. 4 балла Не реализована верстка страницы фильма. Даже если функционал не готов, можно делать заготовку-верстку с моковыми данными. При подключении функционала будет меньше работы

Функциональные требования:

Шапка

Критерий Макс. Моя оценка
Позиционируется липко (стики) 2 балла. 2

Авторизация

Нет реализации самой авторизации, но реализована модалка для авторизации через портал, это очень здорово! Критерий Макс. Моя оценка
Для реализации модального окна используется портал 3 балла. 3
После успешной авторизации кнопка «Войти» меняется на заглушку иконки пользователя и кнопку «Выйти» 2 балла. 0
Сохраняем авторизационный токен из ответа ручки бэка (например, в localStorage) 4 балла. 0
В идеале, работать с токеном через thunk (где-то в мидлваре) 3 балла. 0
По клику на кнопку «Выйти» удаляем токен и снимает авторизацию 2 балла. 0
При инициализации приложения проверяем авторизационный токен 2 балла. 0

Реализована страница списка фильмов

Поиск:

Критерий Макс. Моя оценка Комментарий
Поиск происходит во время ввода пользователем символов. Дёргаем ручку /search 4 балла. 4 Отличное применение debounce! Search дожидается, когда пользователь введет текст

Фильтры:

Критерий Макс. Моя оценка Комментарий
Реализованы фильтры с dropdown 4 балла. 4 Для удобства использования можно реализовать открытие dropdown по клику в любой области dropdown, а не только при нажатии на стрелочку. Так пользователю не придется целиться в маленький элемент
Сохранять фильтры в query-params 3 балла. 0 Чтобы пользователь мог делиться ссылкой на результат работы фильтров, здорово сохранять параметры поиска в query-params url-адреса. Примеры можно найти здесь https://www.codemzy.com/blog/get-set-query-params-react
Реализован список фильмов с пагинацией 3 балла. 3

Страница фильма

Не реализовано

Общий функционал

Критерий Макс. Моя оценка Комментарий
Реализовать единообразную обработку ошибок для запросов 2 балла. 2
Реализован лоадер 2 балла. 2 Отличная работа! Пользователь видит, что процесс загрузки начался.
Используем debounce для поиска фильма и выставления оценки 4 балла. 4 Debounce реализован отдельным модулем, это очень правильно. При подготовке функционала для работы с оценками его можно будет легко применить

Стор

Критерий Макс. Моя оценка Комментарий
Используется rtk и rtk-query 4 балла. 2 В работе не использовалось rtk-query. Для запросов очень удобно использовать createApi https://redux-toolkit.js.org/rtk-query/api/createApi
Данные корректно разбиты на модули (пример - авторизация, searchParams из фильтров) 2 балла. 2
Селекторы написаны оптимально (нет кучи дублирования) 2 балла. 2

Миграция на Next

Не реализована

RomanMitaki commented 1 week ago

Спасибо за оценку и отдельное спасибо за комментарии и рекомендации!