/redux-cart

⭐️ Live example

Primary LanguageTypeScript

This project was bootstrapped with Create React App.

Задание

Необходимо реализовать клиентсайд корзины покупателя. Backend не нужен, достаточно ограничиться заглушками в виде файлов с json. Задание должно быть доступно в рабочем виде по http-ссылке (например репо на гитхабе со ссылкой на github pages). Целью тестового задания не является сделать красивый UI, дополнительные модальные окошки, хлебные крошки (breadcrumbs) и прочие визуальные элементы не добавят ценности тестовому заданию, но и не станут минусом.

Корзина должна хранить состояние между обновлениями страницы и между сессиями браузера, товары можно добавлять и удалять. Заполнять корзину можно по кнопке автоматически, а затем можно добавить новый товар (можно генерировать случайный товар), либо увеличить/уменьшить количество у какого-то уже находящегося в списке товара. Список покупок в виде таблицы (3 колонки: название, цена, количество) и может быть отсортирован по клику на заголовок колонки: если первый клик сортирует по убыванию, то второй клик по той же колонке сортирует по возрастанию. Сортировка должна быть стабильной (устойчивой, stable sorting). В любой момент текущий список покупок может быть сериализован и отправлен на сервер (практический юзкейз: сохранение списка товаров в сессию или переход на оплату товаров).

Обязательные для использования библиотеки: React и Redux, использование JSX и стандарта ECMAScript 2015 (ES6) или выше. Код должен быть расширяемым и хорошо задокументированным, будто это часть большого проекта онлайн-магазина. Обратите внимание, что мы хотим увидеть реализацию сортировки, сделанной вами, т.е. использование готовых "умных" компонентов таблиц, которые сами сортируют, не допускается.

Будет плюсом если какая-то отдельная часть тестового задания (напр. один модуль и его зависимости) написаны с использованием сильной статической типизации (Flow/TypeScript) и покрыты юнит-тестами не менее, чем на 80%.