Приоритеты при проверке (в порядке убывания значимости):
- Логическая корректность реализации (насколько логически правильно всё сделано)
- Работоспособность
- Полнота реализации
- Аккуратность и соответствие стилю кодирования
- Внешний вид и оформление
Все страницы должны быть реализованы с помощью React Router в соответствии с теми правилами, которые описаны в задании. Отсутствие реализации одной из страниц (включая 404) приводит к необходимости отправки на доработку.
Внешний вид должен быть аналогичен тому, что представлен в разметке (каталог html
), если внешний вид не соответствует - отправляем на доработку. В разметке специально использованы как классы, так и inline-стили, чтобы студент показал знания использования и того, и другого.
Для хранения состояния корзины и побочных эффектов могут использоваться:
- Context API + побочные эффекты в компонентах
- Redux + побочные эффекты в компонентах, либо Action Creator'ах
- Redux + Redux Thunk
- Redux + Redux Observable
- Redux + Redux Saga
Важно: не должно быть прямого пробрасывания состояния корзины через props
сквозь всё приложение! За это сразу отправлять на доработку.
Итоговая оценка не зависит от того, какой из 5-ти способов выбирает студент, но при этом сами способы должны быть реализованы корректно в соответствии с выбранным походходом*:
- Если используется Redux - то всё состояние хранится в Store, Action создаются Action Creator'ами, типы Action вынесены в константы
- Если используется Thunk - все побочные эффекты в Thunk'ах + dispatch для Thunk'ов аналогичен dispatch'у для обычных Action Creator
- Если используется Observable и Saga - соответственно Epic'и и Saga.
Примечание*: да, мы знаем, что подходы можно комбинировать (и можно в одном проекте замиксовать Thunk, Observable и Saga, а также хранить состояние в Redux, Context'е и локально), но в рамках диплома требуем чёткого разграничения.
Должна быть правильная обработка состояния загрузки: показываться loader для всех сетевых запросов. У каждого большого компонента свой loader (у каталога, топ продаж и т.д.).
Должна быть корректно реализована обработка ошибок (в случае Observable и Saga - не приводящая к остановке) с выводом сообщения об ошибке пользователю. Студент сам должен предложить формат и реализацию отображения ошибки (но никаких window.alert
и console.*
).
Специально для упрощения в качестве библиотеки CSS используется Bootstrap.
Весь код должен быть выложен на GitHub в виде отдельного репозитория с правильным .gitignore и без всякого лишнего мусора.
При оформлении кода рекомендуем вам опираться на стиль кодирования Airbnb: https://github.com/airbnb/javascript (именно JS, а не React), если студент не следует, то указывать в качестве рекомендаций. При наличии систематического злоупотребления - является поводом для отправки на доработку.