Приложение

для международной выставки оливкового масла оливкового масла в Испании, Мадрид

Задача

Разработать нативное приложение IOS/Android согласно предоставлянным макетам. Приложение должно предоставлять доступ к базе поставщиков оборудования и производителей оливкового масла. Преусмотрена возможность поиска с учетом геолокации (определить ближайшие к пользователю компании, предоставляющие нужные услуги), монетизация на основе позиционирования в каталоге, баннерной сети, присутствует блог и возможность просмотра котировок акций, инофрмация о партнерах.

Процесс

Intro

На реализацию у нас было 7 недель и ни дня больше. За это время надо было не только написать приложение IOS/Android и backend для него, но и протестировать, а затем выгрузить всё на боевой сервер (production), провести обучение персонала по работе с системой управления приложением и помочь с наполнением контента.

После бурной дисскусии определился основоной стек технологий (Laravel, Mysql, Swift, Java, Node.js) и группа разработчиков. Приступили к обсуждению процесса разработки.

Проектирование API, БД

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

Первую неделю решено было убить на анализ макетов, проектирование БД и сущностей, построение RESTFull API, и, наполнение базы тестовыми данными. Таким образом, пока разработчики IOS / Android пишут frontend приложения, можно спокойно разрабатывать backend.

Разработка IOS/Android

Благодаря тщательно спроектированному RESTFull API, версии для IOS/Android мы написали достаточно легко и быстро. На разработку мобильных приложений ушло 4 недели.

Backend

Backend разработка оказалась чуть сложнее чем мы расчитывали. Задача расчета расстояния до нужной компании оказалась весьма интересной. Так как земля всё таки не плоская (к великому сожалению Общества плоской Земли), пришлось воспользоваться формулой гаверсинусов для рассчета расстояния между точками на сфере.

Земля всё же не сфера, и ее геометрическим аналогом называется специальная фигура - геоид, поэтому потребовалось скорректировать немного формулы и ввести коэфиценты для корректного расчета расстояния. Сам же рассчет расстояний с требуемой сортировкой было решено было реализовать средствами БД.

Пример запроса:
Участок кода отвечающий за расчет состояний:

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

Итоги

Протестировали, опубликовали приложения в магазинах, развернули систему управления на production сервере, обучили персонал, помогли заполнить базу. Время разработки - 7 недель. В процессе создания приложения участвовала команда из 5-х программистов.

Справились на отлично, в планах заказчика увеличение функционала (добавление личных кабинетов, системы обмена сообщениями и файлами между пользователями приложения). Была сделана хорошая презентация (на фото вырезка из газеты), освещенная местными СМИ, в которой не забыли упомянуть и о нас!