Многостраничное SPA приложение предоставляет пользователям возможность просматривать список фильмов, изучать детальную информацию о них и сохранять понравившиеся фильмы в избранное. Данные получаются через API Кинопоиска в соответствии с техническими требованиями задания.
- Получение данных через Кинопоиск API
- Бесконечная прокрутка с подгрузкой по 50 фильмов
- Отображение для каждого фильма:
- Постер фильма (если доступен)
- Название фильма
- Год выпуска
- Рейтинг фильма
- По жанру (выбор нескольких жанров)
- По рейтингу (диапазон рейтинга)
- По году выпуска (диапазон лет начиная с 1990)
- Синхронизация фильтров с searchParameters
- Применение фильтров при переходе по прямой ссылке
- Переход на страницу фильма при клике из списка
- Отображение:
- Постер фильма (если доступен)
- Название фильма
- Описание фильма
- Рейтинг фильма (если доступен - ср.арифметическое со всех источников и отдельный рейтинг по каждой платформе, в противном случае 'н/д')
- Дата выхода
- Список жанров
- Отдельная страница со списком избранных фильмов
- Сохранение списка при перезагрузке страницы (localStorage)
- Добавление фильма только после подтверждения в кастомном модальном окне
- Возможность отмены добавления в модальном окне
- Node.js версии 18 или выше
- Менеджер пакетов pnpm или npm
- Клонирование репозитория:
git clone https://github.com/pendoss/vkKino.git
cd vkKino- Установка зависимостей:
pnpm install- Настройка переменных окружения:
cp .env.default .envВ файле .env вставьте свой токен (его можно получить на сайте https://kinopoisk.dev/)
- Запуск
pnpm build
pnpm startв режиме разработки:
pnpm devvk-kino/
├── app/
│ ├── components/ # React компоненты
│ ├── hooks/ # Хуки
│ ├── routes/ # Страницы приложения
│ ├── stores/ # MobX stores для управления состоянием
│ ├── types/ # TypeScript типы
│ ├── utils/ # Вспомогательные функции
│ └── api/ # API интеграция
├── public/
└── build/
Проект выполнен в полном соответствии с техническими требованиями:
- React - использованы функциональные компоненты и хуки
- TypeScript - строгая типизация всего проекта
- Кинопоиск API - источник данных о фильмах
- React Router - маршрутизация SPA
- MobX - управление состоянием приложения
- Axios - HTTP клиент для API запросов
- Frontend: React 19, TypeScript
- Роутинг: React Router 7
- Состояние: MobX
- Стилизация: TailwindCSS
- Сборка: Vite
- HTTP клиент: Axios
- API: Kinopoisk API (api.kinopoisk.dev)
Используется MobX для реактивного управления состоянием приложения:
movieStore- управление списком фильмов и бесконечной прокруткойmovieFilterStore- состояние фильтров с синхронизацией URLfavoriteStore- управление избранными фильмами с localStorage
- Главная страница (
/) - список фильмов с фильтрацией - Страница фильма (
/movie/:id) - детальная информация - Избранное (
/favorites) - сохраненные фильмы
-
Главная страница - отображение списка фильмов с возможностью фильтрации
- Фильтрация по жанрам (множественный выбор)
- Фильтрация по рейтингу Кинопоиска(диапазон)
- Фильтрация по году выпуска (от 1990 года)
- Бесконечная прокрутка для загрузки дополнительных фильмов
-
Страница фильма - подробная информация о выбранном фильме
- Полная информация о фильме
- Возможность добавления в избранное
- Просмотр среднего и отдельного рейтинга среди доступных данных
-
Избранное - сохраненные пользователем фильмы
- Локальное хранение данных
- Возможность удаления из избранного
Фильтры автоматически синхронизируются с URL, что позволяет:
- Делиться ссылками с примененными фильтрами
- Использовать кнопки "Назад/Вперед" браузера
- Сохранять состояние фильтров при перезагрузке страницы
VITE_KINOPOISK_API_KEY- API ключ для доступа к Кинопоиск APIVITE_KINOPOISK_BASE_URL- базовый URL для API запросов
Создано полнофункциональное SPA приложение, которое:
- Полностью соответствует техническим требованиям задания
- Использует все указанные технологии (React, TypeScript, API Кинопоиска)
- Реализует весь требуемый функционал