Мы в Telegram
Добавить новость
123ru.net
«Фрилансим»
Апрель
2024

Создать учебный сайт на React

0
Это учебный некоммерческий проект.

Задача:
Необходимо создать приложение "name"Portal (например moviePortal). Как вариант на основе The Open Movie Database: www.omdbapi.com.
Проект создаем с помощью Create React App (https://create-react-app.dev/). Библиотеки, которые следует использовать для выполнения задачи:
React JS, Redux Toolkit, React router, Typescript (опционально).

Макета нет. Подойдет любой на выбор исполнителя. Достаточно Десктопного разрешения (мобилка не нужна). Для Deploy Вы можете использовать Github Pages или любое другое бесплатное решение.

Состав:
1) Главная страница. На ней присутствует header: Логотип сайта - при клике осуществляется переход на главную страницу; "избранные" - переход на страницу избранных фильмов; Login пользователь или кнопка "войти" и "авторизоваться" - переход на страницу авторизации. На главной странице должен отображаться список фильмов. Список фильмов можно отфильтровать (например по дате, алфавиту и т.д.).
Реализовать кастомную пагинацию для вывода списка фильмов. Реализовать поиск фильма по введенной строке из поля поиска.
При клике по карточке фильма - открывается страница с информацией о конкретном фильме.
2) Страница с информацией о конкретном фильме.
Есть кнопка "like", которая добавляет текущий фильм в "избранные". (Если текущий фильм уже есть в списке "избранных", то вместо кнопки "like" отображается кнопка "убрать из избранных".) Если на кнопку "like" нажал не авторизованный пользователь, то происходит редирект на страницу авторизации. Только авторизованные пользователи могут сохранять фильмы в "избранные".
3) Страница авторизации. Должна присутствовать кнопка "вход" и кнопка "регистрация". При клике по "вход" отображается форма с полями login и password, при правильном вводе данных пользователь становится авторизованным и в header отображается его login. При клике на "регистрация" отображается форма для регистрации нового пользователя с 3 полями: login, пароль, повторите пароль. Для пароля требуется предусмотреть минимальную валидацию.
4) Страница со списком "избранных фильмов" (данные хранятся в LS).
Реализовать пагинацию для избранных фильмов.
5) 404 страница.
6) Страница для Error Boundary.
Так же необходимо предусмотреть ленивую подгрузку контента, лоадеры, обернуть приложение в Error Boundary (https://ru.reactjs.org/docs/error-
boundaries.html#introducing-error-boundaries).


Требования к проекту.
1. В проекте используются функциональные компоненты c хуками.
2. Есть четкое разделение на умные и глупые компоненты.
3. Есть рендеринг списков в компонентах. (минимум в 2).
4. Реализованы формы в компонентах. (минимуи в 1).
5. Есть применение React Контекст API.
6. Есть применение предохранителя.
7. Есть кастомные хуки (минимум 1).
8. Используется PropTypes (для проектов без TS) (минимум в 3 компонентах).
9. Есть кейс с применение Debounce.
10. Есть применение lazy + Suspense.
11. В проекте используется Redux Toolkit.
12. В проекте используется RTK Query.
13. В проекте есть кастомная мидлвара (минимум 1).
14. Регистрация пользователей в приложении осуществляется через LocalStorage.


Примечания:
При создании поля поиска не забудьте реализовать debounce, если вешаете запросы на onChange
инпута, либо делайте кнопку для отправки запроса и очищайте после этого поле поиска.
Конечное приложение должно быть развернуто на каком-нибудь сервере и доступно для
просмотра в интернете.
Для вывода контента страницы используйте данные, которые предоставляет API.
Необходимо создать сайт с приятным UI интерфейсом и удобной навигацией.







Загрузка...


Губернаторы России
Москва

Собянин: Обрабатывающие предприятия Москвы увеличили производство почти на 18 процентов


Спорт в России и мире
Москва

Полина Гагарина: «Нет, я не ухожу на пенсию»


Загрузка...

Все новости спорта сегодня


Новости тенниса
Даниил Медведев

Медведев обыграл Бублика и вышел в четвертьфинал "Мастерса" в Мадриде


Загрузка...


123ru.net – это самые свежие новости из регионов и со всего мира в прямом эфире 24 часа в сутки 7 дней в неделю на всех языках мира без цензуры и предвзятости редактора. Не новости делают нас, а мы – делаем новости. Наши новости опубликованы живыми людьми в формате онлайн. Вы всегда можете добавить свои новости сиюминутно – здесь и прочитать их тут же и – сейчас в России, в Украине и в мире по темам в режиме 24/7 ежесекундно. А теперь ещё - регионы, Крым, Москва и Россия.


Загрузка...

Загрузка...

Экология в России и мире
Москва

Эксперт Президентской академии в Санкт-Петербурге о развитии «зеленой» экономики в РФ





Путин в России и мире
Москва

Путин и Рахмон обсудили борьбу с терроризмом и ситуацию с мигрантами


Лукашенко в Беларуси и мире
Минск

В Минске одобрен проект соглашения о системе таможенного транзита ЕАЭС




123ru.netмеждународная интерактивная информационная сеть (ежеминутные новости с ежедневным интелектуальным архивом). Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net.

Мы не навязываем Вам своё видение, мы даём Вам объективный срез событий дня без цензуры и без купюр. Новости, какие они есть — онлайн (с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии).

123ru.net — живые новости в прямом эфире!

В любую минуту Вы можете добавить свою новость мгновенно — здесь.





Зеленский в Украине и мире

Навальный в России и мире


Здоровье в России и мире


Частные объявления в Вашем городе, в Вашем регионе и в России






Загрузка...

Загрузка...



Полина Гагарина

Полина Гагарина опровергла «уход на пенсию» и рассказала о новом рубеже



Москва

Тренер «Рубина» высказался о предстоящем матче с ЦСКА

Друзья 123ru.net


Информационные партнёры 123ru.net



Спонсоры 123ru.net