О проекте
Foodfox — сервис быстрой доставки еды из локальных ресторанов. Представлен сайтом, приложением для iOS и приложением для Android. Бета-запуск проекта произошел в конце 2015, а в апреле 2016 сервис был запущен официально.
Foodfox решает проблему отсутствия у многих хороших ресторанов собственной доставки. Главные особенности сервиса:
- Посетителю предлагается выбор только из ближайших ресторанов (2-2,5 км)
- Собственные курьеры
- Представлены только лучшие рестораны, разного ценового уровня.
На данный момент проект работает почти по всей Москве, подключено около 600 объектов (данные на март 2017 года).
Сотрудничество
Мы работаем с Foodfox по принципу предоставления персонала, то есть не принимаем участия в управлении разработкой.
Создатели проекта обратились к нам по рекомендации. Работу мы начали осенью 2015 года. Со стороны Foodfox на тот момент были основатели: Максим, Сергей и Илья. А с нашей стороны — три разработчика и менеджер для координации. Количество наших программистов на проекте периодически меняется в зависимости от текущих потребностей заказчика.
На проекте с самого начала был собственный опытный технический директор, но тем не менее, мы не просто выполняли роль исполнителей задач, но и делились опытом как в технической части (например, по архитектуре API), так и в целом по продукту: помогали построить рабочие процессы, вносили предложения по функционалу проекта и давали советы по вопросам, важным для продукта, но не связанным с программированием.
Пользовательская часть проекта
Интерфейс очень лаконичный: на главной странице посетитель вводит адрес доставки и нажимает “Найти еду”. Зарегистрированные пользователи могут сохранять свои адреса, чтобы не вводить их каждый раз.
Далее выводится список ресторанов вблизи указанного места. Для каждого из них указаны параметры:
- Название
- Тип кухни
- Ценовой уровень
- Примерное время доставки
- Расстояние
Зайдя на страницу ресторана, пользователь видит меню, где он выбирает блюда и делает заказ.
Затем пользователь ждет доставки, получает заказ и наслаждается вкусным блюдом.
Административная часть проекта
Первая ключевая функция админки — это управление ресторанами.
В списке ресторанов выводится основная информация: адрес, категории, среднее время приготовления и режим работы.
У каждого ресторана есть меню. На странице меню редактируются доступные блюда.
Вторая важная функция админки — управление заказами.
На странице списка заказов каждая из строчек показывается соответствующим цветом в зависимости от текущего статуса. Как и в случае со списком ресторанов, можно вести поиск по всем основным параметрам.
Страница просмотра заказа разделена на смысловые блоки. По каждому из заказов менеджер вручную проверяет корректность данных, назначает курьера и запускает доставку. Для удобства тут же есть контактная информация о клиенте и ресторане.
Помимо описанных страниц, административная часть содержит следующие разделы:
- промокоды
- статические страницы
- курьеры
- категории ресторанов
- категории меню
- карта
- настройки проекта
На карте показываются все заказы и рестораны.
Рабочий процесс
О том, как на Foodfox устроены рабочие процессы, мы расспросили Олю Иванову — нашего основного программиста на этом проекте в 2016 году.
– Расскажи про команду проекта.
Команда у нас крутая. Из тех, с кем я больше всего сейчас общаюсь, это Роза — менеджер продукта, Илья — технический директор, Андрей — тимлид и Эльдар — тестировщик.
– От кого поступают задачи?
В начале проекта задачи поступали напрямую от основателей проекта, а позже появилась Роза, и теперь все задачи мы обсуждаем с ней.
– В каком формате идет общение?
Иногда хватает письменной постановки задачи в таск-трэкере. Если появляются вопросы с точки зрения бизнес-логики, обсуждаем их с менеджером по Skype в письменном или устном виде. Если же нужно что-то обсудить на уровне технической реализации, то я обсуждаю это с Андреем и Ильей.
– Как часто вы созваниваетесь по Skype?
Когда разработка проекта только начиналась, требовалось регулярно показывать результат основателям проекта — Максиму и Сергею, поэтому аудиоконференции проходили раз в два-три дня. Во время звонка мы демонстрировали и обсуждали группы реализованных фич, а также бизнес-логику задач, которые еще предстояло сделать. Теперь же звонков практически нет, потому что задачи проверяет тестировщик и менеджер проекта, а большинство задач подробно описаны и не нуждаются в пояснении.
– Каков твой рабочий режим?
У меня нет ярко выраженного рабочего режима. Иногда работаю как обычный человек — часов с одиннадцати до восьми вечера, иногда начинаю только вечером, и пишу код до рассвета. Главное — чтобы задача была выполнена, и чтобы ты в обычное рабочее время был на связи, мог что-то пофиксить быстро, все такое.
– Как выглядит жизненный цикл задач?
Задача назначается на разработчика, разработчик выполняет задачу, деплоит на тестовую площадку. Далее происходит ревью кода и после этого задача тестируется на площадке. Затем, когда все круто, код идет в продакшн.
– Какой сервис используется для работы с задачами?
В начале проекта по инициативе Evercode Lab использовался Trello. После появления Розы для работы с задачами стали использовать таск-трекер Asana. Теперь большую часть работы с таск-трекером выполняет Роза, мне лишь остается читать заголовки и описание задач, выполнять их и передавать в тест, поэтому я пользуюсь только страницей “My Tasks in Foodfox”.
– Используется ли какая-то документация или задачи описываются в карточках?
Задачи описываются в карточках.
– Какие самые интересные/запоминающиеся задачи тебе приходилось делать на проекте?
На этом проекте мне нравится большинство задач. Больше всего запомнилось то, чем я на этом проекте занималась впервые — клиентской разработкой на ангуляре. Запомнилось, потому что освежила в памяти, что такое ничего не понимать, просто смотреть в монитор, потом в окно, потом биться головой об стол, а потом все начинает работать, потому что кэш, опечатка или что-то в этом духе. Все-таки фронтенд не мой конек. 🙂 Но это только плюс проекта: можно выйти из зоны комфорта, изучить новое, а потом вернуться обратно в уютненький бэкенд.
Технические особенности
Проект пишется на Symfony2 и AngularJS.
На бэкенде задействован обычный набор бандлов, выделить можно FOSRestBundle для API и AliceFixturesBundle для фикстур. AliceFixturesBundle произвел очень хорошее впечатление.
В одном source-бандле проекта для управления пользовательскими записями используется FOSUserBundle, но это скорее по привычке: проще делать авторизацию, регистрацию и остальное с помощью базовых возможностей Symfony.
С помощью библиотеки yohang/finite организован жизненный цикл заказа по принципу конечного автомата. Определяются начальные, промежуточные и конечные состояния, переходы между ними, callback функции — получается красиво и просто.
Помимо этого в проекте используются elasticsearch, redis и rabbitMQ. А также огромный пласт работы выполнен для интеграции с ресторанами через разные доступные сервисы.
Команда
От Evercode Lab над проектом работали:
-
Начало разработки:
- Сергей Лунев
- Артем Анашев
- Оля Иванова
-
Этап развития продукта:
- Оля Иванова
- Михаил Голодяев
- Сергей Волобуев
- Дмитрий Константинов
Заключение
На момент публикации кейса мы работаем вместе с Foodfox уже полтора года. Эта компания, за которой мы наблюдаем с самого рождения. И команда проекта раз за разом показывает, что они знают своё дело и действительно строят отличный сервис. Приятно, что в этом есть и наш вклад.
Отзыв заказчика
Мы обратились к Роману и Evercode Lab на самой ранней стадии разработки Foodfox.
Команда Evercode Lab помогла нам с разработкой первой версии API для мобильных приложений, интерфейса администратора и частью фронтенда. Вся команда и Роман в том числе всегда делились своим опытом и видением, давали обратную связь, старались привнести дополнительную ценность в продукт.
Все организационные вопросы решались легко. Если возникали какие-либо проблемы, Evercode Lab делали всё возможное, чтобы разрешить их быстро и безболезненно.
И в итоге, полтора года спустя, мы до сих пор сотрудничаем.