Мобильное приложение «Фестивали скалолазания» предназначено для регистрации участников на фестивали и самостоятельного ввода результатов.
Должно работать на платформах Android и iOS.
Связь с бэкэндом - через https-сервисы.
Часть функционала (ввод результатов) должна быть доступна оффлайн.
Пользователь при первом запуске приложения авторизуется, указывая свою электронную почту.
Приложение отправляет введенную почту в бэкэнд и получает ответ - существует такой пользователь или нет. Если не существует (ранее он не был зарегистрирован) - ему отображается введенный адрес (для проверки правильности) и предлагается получить письмо для подтверждения регистрации; либо скорректировать почту. Если пользователь подтверждает отправку письма - приложение передает в бэкэнд команду на отправку письма с одноразовым кодом.
На следующем шаге пользователь вводит полученный в почту код в приложение. Приложение отправляет код в бэкэнд и получает ответ - верный код или нет. Если верный - авторизация пройдена, приложение получает с бэкэнда токен авторизации (строка) и сохраняет его для последующих запросов. Если код неверен - пользователю предлагается ввести код заново либо запросить повторную отправку письма.
Во всех последующих запросах приложение отправляет в бэкэнд токен авторизации. Если на запрос бэкэнд отвечает ошибкой авторизации, приложение начинает авторизацию заново.
При входе в раздел приложение получает с сервера актуальный список фестивалей:
Пользователь может выбрать один фестиваль в качестве текущего. При выборе фестиваля приложение получает с сервера детальную информацию по нему:
При открытии списка участников приложение получает с сервера актуальный список участников текущего фестиваля, заявленных в текущем аккаунте:
В списке участников данного пользователя отображаются:
Пользователь указывает:
Все поля обязательны для заполнения. После полного ввода данные отправляются на сервер. На основе полученных данных сервер возвращает:
Пользователю отображается вторая часть формы регистрации:
Проверить, промокод отправляется на сервер для проверки; сервер возвращает:Если после определения зачета пользователь меняет дату рождения, то процедура определения зачета запускается заново.
Если была определена скидка, то пользователь не может редактировать ФИО и дату рождения.
При изменении пакета расчет стоимости запускается заново.
В зависимости от реквизитов фестиваля перед оплатой может быть обязательным выбор хотя бы одного сета.
После заполнения всех обязательных полей и флажков согласия пользователю становится доступна кнопка отправки участника на регистрацию. Данные отправляются на сервер, сервер возвращает:
Если регистрация удачна и есть сумма к оплате (исключения: пакет с нулевой стоимостью или определилась 100% скидка), пользователю отображается предложение перейти к оплате. При его согласии приложение запрашивает на сервере ссылку на платежную форму для данного участника и открывает ее в браузере.
Пользователь может скорректировать данные ранее заявленного участника:
При сохранении участника данные отправляются на сервере, сервер возвращает:
Этот раздел должен работать при отсутствии Интернета (оффлайн). Для обеспечения этого при каждом открытии приложения (а также при смене текущего фестиваля) оно:
При открытии раздела отображается ранее загруженный список трасс, доступный текущему участнику. Если текущий участник не выбран - пользователь выбирает его из списка своих допущенных участников.
Список трасс - с иерархическими папками (до 3 уровней вложенности), по каждой трассе отображается:
При выборе трассы открывается ее карточка для внесения результата:
Пользователь может внести/изменить результат и нажать Сохранить. Если Интернет не доступен - данные сохраняются в приложении и запоминается, что для текущего участника есть неотправленные результаты. Если Интернет доступен, данные о трассе сразу отправляются на сервер. Сервер возвращает:
Если для какого-либо из участников данного пользователя есть неотправленные результаты, в списке трасс отображается кнопка Отправить результаты. При ее нажатии, если доступен Интернет, на сервер отправляются все трассы каждого участника, для которого есть неотправленные результаты. После удачно отправки признаки неотправленных результатов сбрасываются, при неудачной пользователю отображается сообщение об ошибке, которую вернул сервер.
В процессе обсуждения.
Есть список доступных для проката экземпляров снаряжения (например, веревка №1, веревка №2, веревка №3, комплект оттяжек красный, комплект оттяжек зеленый, болдер-мат №1, болдер-мат №2…) и дни фестиваля (например, 10, 11, 12, 13, 14, 15 июня).
Для каждого экземпляра снаряжения на сервере есть информация о брони (экземпляр снаряжения; дата).
Пользователь в приложении может из списка свободного снаряжения выбрать нужные ему экземпляры и нужные даты, в которые эти конкретные экземпляры не заняты.
Выбрал набор экземпляров и даты - информация отправляется на сервер. Если сервер подтверждает, что эти экземпляры в эти даны свободны, пользователь переадресуется на форму оплаты
В процессе обсуждения.
Есть список рейсов автобусов (дата, время, направление, количество мест).
Пользователь может выбрать рейс и указать участника. Если свободные места есть - данные о рейсе и участнике отправляются на сервер. Север возвращает: - успех; - отказ и сообщение об ошибке, которое необходимо показать пользователю.
Оплата не требуется. Необходима возможность отказаться от поездки не позднее, чем за 3 часа до рейса.