Требования:

Необходимо создать приложение с помощью которого можно оформить доставку из дома. Приложение состоит из калькулятор расчета суммы посылки и заполнения данных, как отправителя, так и получателя.

В рамках задания мы не ограничиваем вас. Это может быть космическая/магическая доставка товаров 📦 или клон любой существующей доставки, тут мы полагаемся на вашу фантазию, также вы можете самостоятельно расширить требования задачи при желании.

Дизайн

https://www.figma.com/design/rtf8FFjkY084yTN81wsjsr/Задания-ШИФТ-Интенсив?node-id=0-1&t=12Jogxp0YHZpKRFg-0

https://www.figma.com/file/KsxWtBbM0Ni8e5c9aFBa8I/UI-Kit-ШИФТ?type=design&node-id=76-9676&mode=design&t=ppJ28OQPmP1ZBr9h-0

Api

My Website

Уровни выполнения:

  1. Легкий - ожидаемым результатом является форма для расчета доставки, в которую входит:
    1. Реализованы все поля
    2. Реализована валидация для полей
    3. Реализованы запросы get /delivery/points и get /delivery/package/types и используются результаты данных запросов в форме
    4. Реализована логика расчета суммы на кнопку рассчитать
    5. Реализовано отображение результата расчета
  2. Средний - ожидаемым результатом является форма для расчета доставки, в которую входит:
    1. Реализованы все поля
    2. Реализована валидация для полей
    3. Реализованы запросы get /delivery/points и get /delivery/package/types и используется результаты запросов в форме
    4. Реализован запрос post /delivery/calc на кнопку рассчитать
    5. Реализована пошаговая форма заполнения данных для доставки
    6. Реализовано окно с подтверждением заказа
    7. Реализован запрос post /delivery/order на кнопку оформить после подтверждения
    8. Реализовано отображение результата заявки
  3. Сложный -
    1. Флоу
      1. Реализованы все поля
      2. Реализована валидация для полей
      3. Реализованы запросы get /delivery/points и get /delivery/package/types и используется результаты запросов в форме
      4. Реализован запрос post /delivery/calc на кнопку рассчитать
      5. Реализована пошаговая форма заполнения данных для доставки (если пользователь авторизован, взять его данные из профиля, данные между шагами сохраняются)
      6. Реализовано окно с подтверждением заказа
      7. Реализован запрос post /delivery/order на кнопку оформить после подтверждения
      8. Реализовано отображение результата заявки
    2. Личный кабинет
      1. Реализовать авторизацию
      2. Реализовать личный кабинет
        1. Получение доставок и отображения их статуса с помощью запроса get /delivery/orders
      3. Реализовать страницу/экран заказа
        1. Посмотреть подробную информацию о доставке с помощью запроса get /delivery/orders/:orderId
        2. Отмена доставку с помощью запроса post /delivery/order/cancel

Требования к валидации:

Экран авторизации

Поле Допустимые символы Кол-во символов Дополнительные требования Значения для проверки Сообщения валидации Примечание
Телефон Только цифры 79234232343 Корректное значение. Сообщения нет
Пустое поле Поле является обязательным
Буквы или символы Не можем ввести. Сообщения нет
Код Только цифры 6 123456 Корректное значение. Сообщения нет
Пустое поле Поле обязательно для заполнения
333 Код должен содержать 6 цифр

Экран расчёта доставки

Поле Допустимые символы Количество символов Дополнительные требования Значения для проверки Сообщения валидации Примечание
Размер посылки Размер Пустое поле Поле является обязательным Выпадающий список размеров посылки

Экран данных получателя

Поле Допустимые символы Количество символов Дополнительные требования Значения для проверки Сообщения валидации Примечание
Фамилия Буквы алфавита, пробел “ “, спец. символы: ` ‘ - 1-60 Недопустим ввод спец. символов в начале и в конце строки Пустое поле Поле является обязательным
Имя Недопустим ввод нескольких спец. символов в строке подряд Иванов Иван Корректное значение. Сообщения нет
Отчество (необязательное) 0-60 Недопустим ввод различных алфавитов в рамках одного поля или группы полей ФИО Ivaнов (сочетание латиницы и кириллицы в одном поле) Значение должно быть задано с использованием одного из следующих алфавитов: кириллического, латинского Обязательность поля определяется его пустотой (если поле пустое – значит не обязательное)
Ivanov Иван Ivanovich Значения заданы с использованием разных алфавитов
-Иванов Некорректный формат
Иванов- Некорректный формат
Ива--нов Некорректный формат
~!@#$%^&*()_+=[]{};:" \./<>? Ввести не можем. Сообщения нет
Телефон Только цифры 79234232343 Корректное значение. Сообщения нет
Пустое поле Поле является обязательным

Экран данных отправителя