Фильмопоиск
Для запуска проекта выполните следующие шаги:
-
Клонируйте репозиторий
git clone https://github.com/TatyanaDolgova/filmopoisk
-
Установите зависимости
npm i
Для запуска проекта выполните следующие шаги:
-
Запустите команду
npm run dev
-
Запустите необходимые сервера.
-
Откройте приложение по адресу http://localhost:5173
Самооценка 80/100:
Базовые требования:
- [x] Создан github-репозиторий, в нём есть README, gitignore, установлены все необходимые зависимости — 5 баллов.
- [x] Проект запускается — 5 баллов.
- [x] Вёрстка соответствует дизайн-макетам (допускаются минимальные отхождения, адаптив не требуется) — 5 баллов.
Функциональные требования:
Шапка (max 2 балла)
- [x] Позиционируется липко (стики);
Авторизация (max 16 баллов)
- [x] Для реализации модального окна используется портал — 3 балла.
- [x] После успешной авторизации кнопка «Войти» меняется на заглушку иконки пользователя и кнопку «Выйти» — 2 балла.
- [x] Сохраняем авторизационный токен из ответа ручки бэка (например, в localStorage) — 4 балла.
- [x] В идеале, работать с токеном через thunk (где-то в мидлваре) — 3 балла.
- [x] По клику на кнопку «Выйти» удаляем токен и снимает авторизацию — 2 балла.
- [x] При инициализации приложения проверяем авторизационный токен — 2 балла.
Реализована страница списка фильмов (max 14 баллов)
Поиск:
- [x] Поиск происходит во время ввода пользователем символов. Дёргаем ручку /search — 4 балла.
Фильтры:
- [x] Реализованы фильтры с dropdown — 4 балла.
- [x] Сохранять фильтры в query-params — 3 балла.
- [x] Реализован список фильмов с пагинацией — 3 балла.
Страница фильма (max 17 баллов)
Реализована работа с получением данных:
- [x] Дёргаем ручку /movie — 4 балла.
- [x] Соответствующие данные отрисованы — 3 балла.
Возможность поставить оценку:
- [x] Есть запрос за получением оценки для фильма — 3 балла.
- [x] Если пользователь авторизован, даём возможность поставить оценку — запрос мутации — 3 балла.
- [x] После выставления оценки обновляем кеш запроса /movie — 4 балла.
Общий функционал (max 8 баллов)
- [x] Реализовать единообразную обработку ошибок для запросов — 2 балла.
- [x] Реализован лоадер — 2 балла.
- [x] Используем debounce для поиска фильма и выставления оценки — 4 балла.
Стор (max 8 баллов)
- [x] Используется rtk и rtk-query — 4 балла.
- [x] Данные корректно разбиты на модули (пример — авторизация, searchParams из фильтров) — 2 балла.
- [x] Селекторы написаны оптимально (нет кучи дублирования) — 2 балла.
Миграция на Next (max 20 баллов) НЕ ВЫПОЛНЕНО
- [ ] Реализована миграция с использованием SSR — 14 баллов.
- [ ] Для картинок используется Image некста. Скрины фильма, которые вне вьюпорта грузятся лениво — 2 балла.
- [ ] Страница фильма реализована с помощью Dynamic Routes — 4 балла.