└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Тестовое задание для стажёра Frontend 2 | 3 | Разработать интерфейс для сайта [Free-To-Play Games](https://www.freetogame.com/), состоящий из двух страниц. 4 | 5 | ## Продуктовые требования 6 | ### Главная страница 7 | - Показывает игры 8 | - Игры можно отфильтровать по платформе и жанру (например, шутер) 9 | - Игры можно отсортировать по дате релиза, популярности и тд 10 | - Каждая игра в списке содержит: 11 | - название 12 | - дата релиза (в российском формате) 13 | - издатель 14 | - жанр 15 | - картинка 16 | - По клику на игру происходит переход на страницу игры 17 | - На загрузку игр показывать индикатор загрузки 18 | - Если не получилось получить данные, необходимо сообщить пользователю 19 | ### Страница игры 20 | - Должна содержать (в любом порядке/виде): 21 | - название 22 | - дата релиза (в российском формате) 23 | - издатель 24 | - разработчик 25 | - жанр 26 | - картинка/постер 27 | - карусель скриншотов 28 | - системные требования 29 | - На странице должна быть кнопка для возврата к списку игр 30 | - На загрузку игры показывать индикатор загрузки 31 | - Если не получилось получить данные, необходимо сообщить пользователю 32 | 33 | ## Технические требования 34 | 35 | - С приложением должно быть удобно работать, как с мобильного экрана, так и с десктопа (адаптивный интерфейс) 36 | - Приложение разработано с помощью React 18+ и Redux / Redux Toolkit 37 | - Использован [Free-To-Play Games API](https://www.freetogame.com/api-doc) (не важно с или без CORS). Вызовы API и обработка данных от него производятся напрямую с фронтенда (кроме случая, если вы сделаете опциональное задание про Node.JS). 38 | - Роутинг выполнен с использованием [React Router v6](https://reactrouter.com/en/main) 39 | - Фреймворк UI любой на ваше усмотрение (например, [Ant Design](https://ant.design/), [Semantic UI](https://react.semantic-ui.com/), [Element UI](http://elemental-ui.com/)) 40 | - Пакетный менеджер `npm` 41 | - Приложение должно запускаться по адресу `localhost:3001` командой `npm start` 42 | - При переходах по ссылкам страница не перезагружается 43 | - Если карточка игры была открыта, то она должна быть доступна при последующих открытиях (перезагрузках) страницы без дополнительного запроса в течение 5 минут 44 | - Исходный код решения должен быть выложен с вашего аккаунта на [Github](http://github.com/) 45 | 46 | ## Опциональные задания 47 | - Использование TypeScript 48 | - Учитывать, что список игр может содержать тысячи тайтлов 49 | - При неудачном запросе должно быть три попытки повторного запроса 50 | - При переходе со страницы на страницу запросы, относящиеся к старой странице, должны прерываться (отменяться/прекращаться) 51 | - Бэкенд для хостинга статики и API для инкапсуляции внешних запросов на Node.JS 52 | - Покрытие кода юнит-тестами 53 | --------------------------------------------------------------------------------