Веб-приложение для доставки цветов: заказы, статусы, курьеры
Разбираем, как спроектировать веб-приложение для доставки цветов: каталог букетов, статусы сборки, расписание курьеров и фото перед отправкой.

Что именно должно решать приложение доставки цветов
Веб-приложение для доставки цветов нужно не ради «красивого интерфейса», а чтобы каждый заказ проходил один понятный путь: принят, собран, проверен, передан курьеру, доставлен. Когда этого пути нет, начинаются звонки, уточнения в мессенджерах, потерянные адреса и спорные ситуации с качеством.
Обычно в системе работают несколько ролей, и у каждой своя зона ответственности:
- Клиент выбирает букет, указывает адрес и время, получает статус.
- Менеджер подтверждает детали, принимает оплату, решает вопросы с заменами.
- Сборщик видит состав заказа, собирает букет, отмечает готовность.
- Курьер получает маршрут и временные окна, подтверждает вручение.
Три проблемы, которые стоит закрыть с первого дня: путаница со статусами (кто и что сделал), забытые доставки (заказ есть, а в расписание никто не поставил) и отсутствие контроля качества (букет уехал, а фото никто не сделал). Еще важнее - одна версия правды. Если менеджер думает, что заказ «в пути», а курьер еще не выехал, клиенту сложно объяснить задержку.
Чтобы не переделывать все через месяц, фиксируйте базовые данные сразу. Они простые, но именно они спасают в спорных случаях:
- Адрес доставки с подъездом, этажом, домофоном.
- Дата и временное окно (например, 12:00-14:00) плюс «не раньше/не позже».
- Контакты получателя и заказчика, и кто кому звонит.
- Комментарии: открытка, «не звонить», «оставить у консьержа».
- Замены: что разрешено менять и на каких условиях.
А вот что можно отложить, чтобы быстрее запуститься: сложные акции и промокоды, личный кабинет с историей, «умные» рекомендации букетов, интеграции с кассами и внешними CRM. Сначала важнее сделать так, чтобы заказ не терялся и всегда было видно, на каком он шаге.
Если вы собираете это в TakProsto, удобно начать с простого сценария по ролям и статусам, а затем через чат добавить расписание курьеров и правило: «без фото перед отправкой заказ не закрывается».
Минимальный запуск: заказы и статусы сборки
Для первого запуска важнее не витрина каталога, а контроль процесса: любой заказ должен быть виден, и его текущий этап должен читаться за секунду. Это быстрее дает пользу и снижает риск ошибок в пиковые часы.
Основа минимальной версии - короткая цепочка статусов, которую все видят одинаково. Обычно хватает таких: принят, в сборке, готов, передан курьеру, доставлен, отменен. Важно, чтобы статус был один, а не «где-то в комментариях». Иначе менеджер и сборщик быстро окажутся в разных реальностях.
Карточка заказа должна быть удобной для двух ролей: менеджера и сборщика. Менеджеру нужно быстро принять решение и связаться с клиентом. Сборщику - понять, что именно собрать и в каком порядке.
Хороший минимум в карточке:
- клиент: имя, телефон, адрес и окно доставки
- состав: выбранный букет, замены, записка, упаковка
- оплата: способ и отметка «оплачено/не оплачено»
- статус и ответственный: кто собирает, кто везет
- заметки и «особые условия»: домофон, фото, без звонка
Дальше - действия в один клик. Чем меньше «надо открыть еще один экран», тем меньше ошибок. На практике чаще всего нужны: смена статуса, быстрый звонок клиенту и короткий комментарий вроде «нет белых роз, согласована замена на кремовые».
Чтобы разбирать спорные случаи, храните историю изменений статуса. Это несложно, но очень помогает: кто и когда перевел заказ в «готов», кто отметил «передан курьеру», какие были комментарии. В истории фиксируйте время, пользователя и старое/новое значение. Тогда если клиент говорит «курьер не приезжал», вы видите реальную цепочку действий, а не пытаетесь восстановить ее по памяти.
Данные и структура: что хранить, чтобы не переделывать
Если начать с правильных сущностей, приложение не придется «перепрошивать», когда появятся курьеры, замены цветов или контроль качества. Частая ошибка - хранить все в одном «заказе» и дописывать поля по мере роста. Лучше сразу разнести данные по понятным блокам.
Базовый набор, который закрывает и каталог, и сборку, и доставку:
- Каталог: букет (как шаблон) и варианты (размер, цена, доступность).
- Заказ: сам заказ и позиции заказа (что именно купили).
- Клиент и адрес: получатель, телефон, комментарии для курьера.
- Доставка и курьер: отдельная запись доставки со временем, статусом и назначением курьера.
- Контроль качества: фото перед отправкой и отметки проверки.
Чтобы дальше было удобно, разделяйте «что продаем» и «что реально собрали». В позиции заказа храните выбранный клиентом букет (ссылку на шаблон из каталога) и зафиксированную цену на момент покупки. А для сборки заведите поля «фактическая комплектация»: что заменили, что добавили, что убрали. Тогда вы спокойно учитываете ситуацию, когда розы закончились и их заменили на другой сорт после согласования.
Минимально обязательные поля, без которых все ломается:
Заказ: номер, дата, сумма, способ оплаты, статус.
Позиция заказа: товар (шаблон букета), количество, цена, комментарий сборщику.
Клиент/получатель: имя, телефон (как минимум один контакт), признак «анонимная доставка».
Адрес: город/район, улица, дом, квартира/офис, интервал доставки.
Доставка: привязка к заказу, статус доставки, плановое время, фактическое время, поле courier_id (может быть пустым).
Опциональные поля добавляйте так, чтобы они не мешали основному потоку: текст открытки, подпись, «не звонить в дверь», код домофона, фото подъезда, комментарий «позвонить за 10 минут». Для анонимной доставки важно хранить, кому можно звонить: получателю, отправителю или никому.
Допы (лента, шарики, открытка) лучше хранить отдельными строками как дополнительные позиции заказа, а не одним текстом. Тогда проще считать себестоимость, печатать сборочный лист и видеть, что забыли вложить.
Связка «заказ - доставка - курьер» должна работать даже если курьер назначается позже. Практично создавать запись доставки сразу при оформлении заказа, а назначение курьера и точное время фиксировать отдельными изменениями. Пример: заказ приняли в 10:15, поставили доставку на 13:00-14:00, курьера назначили в 12:30, а фото перед отправкой прикрепили в 12:55. Все шаги видны и не требуют перестраивать модель данных.
Каталог букетов: что показывать клиенту
Каталог - витрина, которая помогает выбрать букет за минуту, а не заставляет листать бесконечную ленту. В приложении лучше сразу заложить простую структуру: несколько понятных категорий (например, «Розы», «Сборные», «Подарочные наборы», «Свадебные») и быстрые фильтры, которые не перегружают экран.
Хорошо работают фильтры по цене и по поводу. Поводы удобнее делать как теги: «день рождения», «свидание», «маме», «коллеге», «извиниться». Поиск по названию тоже нужен, но не как главная опора. Люди чаще ищут «пионовидные» или «красный букет», поэтому стоит поддержать поиск по ключевым словам и тегам.
Карточка букета: что важно
В карточке не нужно «продавать текстом». Важно снять вопросы до оформления заказа. Обычно достаточно:
- 3-5 фото (общий вид и крупный план)
- состав (основные цветы и зелень) и размер (S/M/L или диаметр)
- варианты: цветовая гамма, упаковка, открытка, доп. подарок
- время сборки (например, 30-60 минут) и пометка «на ближайшее время», если применимо
- условия замены: что может отличаться, если нет конкретного цветка
Наличие и ограничения
Если цветы сезонные или поставка нестабильна, лучше сказать об этом прямо: «сезонный состав, возможна замена» или «доступно по предзаказу на завтра». Для клиента это понятнее, чем «нет в наличии» в конце оформления. Можно также ограничивать выбор времени доставки, если букет требует долгой сборки.
Для постоянных клиентов полезен быстрый повтор заказа: копирование адреса и комментария к сборке, а также возможность повторить с заменой размера. Пример: клиентка раз в месяц заказывает «Нежный M» маме. Ей достаточно двух кликов, чтобы подтвердить тот же букет, а вам - сразу получить понятный заказ без уточнений.
Процесс сборки: от принятия заказа до передачи курьеру
Чтобы доставка работала без нервов, процесс сборки должен быть одинаковым для всех: администратор видит, что обещано клиенту, флорист понимает, что собирать, а курьер получает заказ вовремя. На практике это укладывается в простую цепочку статусов и понятные правила: кто и когда может их менять.
Базовый поток статусов
Начните с короткого набора статусов, которые отражают реальные действия в салоне. Например:
- Новый: заказ создан, но еще не подтвержден
- Подтвержден: согласовано время, состав и адрес
- В сборке: флорист взял заказ в работу
- Упакован: готов к выдаче
- Передан курьеру: ответственность у курьера
Смысл не в количестве статусов, а в том, что каждый статус отвечает на один вопрос: что происходит сейчас и кто следующий.
Время сборки и обещанное время доставки
Фиксируйте два времени: обещанное время доставки и плановое время готовности (когда букет должен быть упакован). Плановую готовность удобно считать от обещанной доставки назад, с запасом на дорогу курьера.
Простой пример: клиент просит доставку к 18:00. Если дорога обычно занимает 35 минут, а упаковка и подготовка 10 минут, то плановая готовность должна быть не позже 17:10. Тогда курьер забирает в 17:20 и есть буфер на пробки.
Чтобы это работало, в карточке заказа храните: время подтверждения, время старта сборки, время упаковки и время передачи курьеру. По этим отметкам легко увидеть, где возникают задержки.
Примечания без потери деталей
Сделайте одно поле «Примечания клиента» (не редактируется после подтверждения) и одно поле «Комментарий команды» (для внутренних пометок). В примечаниях чаще всего встречаются: замена цветов, пожелания по упаковке, просьба позвонить перед доставкой, код домофона.
Хорошее правило: любые изменения после подтверждения фиксируются отдельной записью «Изменение», чтобы было видно, кто и когда согласовал замену и не возникало споров.
Отмены и возвраты без хаоса
Отмена и возврат должны быть отдельными состояниями, а не «сброшенным» статусом. Добавьте причины (например, клиент отменил, нет нужных цветов, не дозвонились, отказ при вручении) и итоговое действие: возврат денег, перенос доставки, повторная отправка.
Если вы собираете приложение через TakProsto, удобно сразу попросить в чате: «Добавь статусы отменен и возврат, причины и журнал изменений по заказу». Тогда в истории будет видно, почему заказ не дошел до этапа передачи курьеру.
Как через чат добавить расписание курьеров: шаг за шагом
Расписание курьеров логично добавлять сразу после того, как у вас заработали заказы и статусы сборки. Тогда оператор не гадает, кому отдать заказ, а видит понятный выбор.
Шаг 1: опишите правила назначения простыми фразами
Начните не с экранов, а с правил. Их удобно задать прямо в чате: по каким районам кто ездит, какие смены бывают, сколько заказов курьер может взять одновременно и как учитывать время доставки.
Хороший минимальный набор выглядит так: курьер работает в своей зоне, смена длится N часов, на ближайшие 60 минут берем только тех, кто свободен, при равных условиях выбираем меньшую загрузку.
Шаг 2: попросите добавить экран расписания
Дальше через чат попросите сделать экран, где диспетчер видит день как таблицу слотов. В TakProsto это удобно формулировать так: «Сделай экран расписания курьеров и форму редактирования смен».
На экране достаточно нескольких полей, чтобы он был полезным с первого дня:
- смена (дата, начало, конец)
- зона или район
- доступность (на смене, перерыв, недоступен)
- текущая загрузка (сколько активных доставок)
- следующий свободный слот (время)
После этого добавьте в заказ карточку курьера: имя, телефон, статус доставки, время выезда и комментарий.
Шаг 3: автоподбор и ручная замена в два действия
Попросите систему при создании заказа предлагать курьера автоматически, но оставьте диспетчеру право быстро заменить. Удобная логика: кнопка «Подобрать курьера» показывает 3 лучших кандидата, а рядом есть «Назначить вручную» с поиском.
Чтобы не путаться, при замене сохраняйте причину (например, «затор», «курьер заболел») и фиксируйте время переназначения.
Шаг 4: заложите исключения, которые бывают каждый день
Проверьте сценарии, которые ломают расписание, и сразу попросите учесть их:
- выходной или внезапная недоступность курьера
- форс-мажор с переносом времени доставки
- два заказа в один адрес (объединить в одну поездку)
- перегруз в пиковые часы (ограничение по активным заказам)
Когда эти вещи учтены, расписание перестает быть «табличкой» и реально помогает доставлять вовремя.
Контроль качества: «фото перед отправкой»
«Фото перед отправкой» - простой шаг, который снижает число споров и возвратов: видно, что именно уехало клиенту, в каком виде и с какой комплектацией. Это лучше заложить сразу, чтобы контроль качества не превратился в хаос из переписок.
Важно выбрать точку контроля. Обычно удобнее делать фото уже после финальной сборки и упаковки, но до передачи курьеру: на снимках виден итоговый результат, и еще есть время быстро исправить ошибку.
Чтобы фото действительно помогало, задайте короткий стандарт, одинаковый для всех заказов. Чаще всего хватает 2-3 снимков:
- букет целиком (видно форму, высоту, обертку)
- крупный план ключевых цветов и декора (видно качество)
- открытка и текст (если есть), чтобы исключить опечатки
Дальше решите, кто подтверждает. В небольшом магазине подтверждение часто делает сборщик, а выборочно проверяет менеджер. В загруженные дни удобнее наоборот: сборщик снимает, менеджер подтверждает перед вызовом курьера.
Полезно добавить два статуса: «Фото загружено» и «Фото подтверждено». Если менеджер отклоняет, заказ не должен уходить в доставку. Вместо этого сделайте понятное действие «Вернуть на доработку» с причиной (например, «не тот цвет ленты», «нет открытки», «пятна на упаковке»).
Фото стоит хранить прямо внутри заказа как отдельные вложения с временем, автором и комментарием. Для порядка настройте доступ по ролям:
- сборщик: загрузка и просмотр своих заказов
- менеджер: просмотр всех, подтверждение и отклонение
- курьер: только просмотр подтвержденного фото (без возможности менять)
- клиент (по желанию): показ одного итогового снимка без внутренних комментариев
Если вы собираете приложение в TakProsto через чат, попросите сделать блок «Фото перед отправкой» в карточке заказа, добавить обязательность фото для определенных статусов и правила видимости по ролям. Тогда контроль качества станет частью процесса, а не дополнительной нагрузкой.
Уведомления и статусы: чтобы все видели одно и то же
Статусы и уведомления должны работать как общий язык для клиента, флориста и курьера. Один и тот же статус в карточке заказа должен быть источником правды, а уведомления - просто сообщать о важном изменении, не создавая «параллельную реальность».
Статусы, которые понимают все
Клиенту важны простые и честные этапы: заказ принят, готовится, в пути, доставлен. Иногда нужен промежуточный статус вроде «ожидаем уточнения» (например, если нет выбранных цветов и требуется замена). Главное правило: статус меняется только при реальном событии, а не «по плану».
Команде статусы обычно чуть детальнее, чтобы были видны узкие места: «в сборке», «ожидает фото», «ожидает курьера», «курьер назначен». Но не делайте отдельную «внутреннюю» вселенную. Проще держать один набор статусов и раздать разные права и видимость полей.
Какие уведомления отправлять и куда
Каналы удобно разделить на обязательные и опциональные. Базу делайте внутри приложения (центр уведомлений и события в заказе), а SMS или мессенджеры подключайте по мере готовности.
Клиенту обычно достаточно 3-4 сообщений за весь заказ:
- подтверждение: заказ принят и время доставки зафиксировано
- вопрос: если нужна замена или уточнение адреса
- старт доставки: «курьер выехал» с окном времени
- финал: «доставлено» (при необходимости с отметкой времени)
Команде важны уведомления, которые помогают не сорвать срок: срочные заказы, просрочка этапа (например, сборка дольше 20 минут), замена курьера, отмена или смена времени. Представьте ситуацию: флорист отметил «готово», но курьер задержался. Тогда система должна подсветить риск и предложить действие: переназначить курьера или согласовать новое окно с клиентом.
Чтобы уведомления не превратились в шум, задайте простые правила: отправляйте только изменения статуса и критические отклонения, объединяйте мелкие события в одно сообщение, включайте «тихий режим» ночью и делайте понятные настройки для роли (клиент, флорист, курьер, администратор).
Если вы собираете это в TakProsto, удобно начать с одного статуса на событие и сразу описать условия отправки: «когда меняется статус на X, отправь уведомление в приложении и, если отмечено, SMS».
Пример рабочего дня: один заказ от оформления до вручения
Утро, 09:10. Клиент оформляет заказ: букет «Нежный розовый», доставка сегодня к 12:00, адрес офиса, комментарий: «позвонить за 5 минут». Заказ сразу появляется у менеджера со статусом «Новый» и временем доставки.
Менеджер открывает карточку заказа и видит: состав букета, сумму, пожелания, выбранный интервал и контакт получателя. В 09:15 менеджер созванивается с клиентом. Выясняется, что нужной эустомы нет, но можно заменить на похожую по цвету. Менеджер фиксирует замену прямо в заказе (чтобы сборщик не гадал) и меняет позицию в составе. Клиент просит перенести доставку на 12:30. Менеджер меняет время и переводит заказ в статус «Подтвержден».
Дальше менеджер ставит заказ в работу: статус «В сборке» и назначает сборщика. Если у вас есть правила, например «заказы на ближайшие 2 часа всегда в приоритете», это удобно показывать меткой или сортировкой в очереди.
К 10:40 сборщик заканчивает букет, отмечает «Собрано» и добавляет «фото перед отправкой». Фото нужно не для контроля ради контроля, а чтобы:
- менеджер быстро подтвердил, что все верно по замене и открытке
- клиенту можно было показать подтверждение в спорных случаях
- в команде была одна версия правды
Менеджер в 10:45 проверяет фото, видит, что лента не того оттенка, и просит поправить это комментарием в карточке. Через 10 минут сборщик обновляет фото, и менеджер переводит заказ в статус «Готов к выдаче курьеру».
В 11:20 курьер получает задачу в своем списке: адрес, время 12:30, контакт, пометка «позвонить за 5 минут» и кнопки статусов. Курьер забирает букет и отмечает «В пути». В 12:25 отмечает «На месте», звонит получателю. В 12:33 вручает и ставит «Доставлено», добавляя короткую заметку (например, «вручил охране, получатель спустился через 2 минуты»).
Такой сценарий легко собрать в TakProsto: начинаете с заказов и статусов, а затем через чат добавляете поля для замен, загрузку фото и экран курьера с кнопками «В пути» и «Доставлено».
Чеклист перед запуском и следующие шаги
Перед запуском важнее не доделать еще одну кнопку, а убрать то, что сломает работу в первый же день. Чаще всего проблемы три: статусов сделали слишком много (никто не понимает, какой выбрать), у заказа нет конкретного ответственного и нет истории изменений (почему поменяли адрес, кто сдвинул время, где потерялось фото).
Быстрый чеклист перед стартом
Пройдитесь по этим пунктам и исправьте слабые места до того, как подключите реальных клиентов:
- Статусы: 6-8 понятных шагов без дублей (принят, в сборке, ожидает фото, передан курьеру, доставлен, отменен).
- Роли и права: кто может менять адрес, время, состав букета, а кто только читает.
- Контроль качества: обязательное «фото перед отправкой» для определенных заказов (например, дорогие букеты или корпоративные).
- Курьеры: расписание, зоны и понятное правило назначения (вручную или автоматически по свободному).
- Просрочки: простой отчет или список «горит сейчас» по сборке и доставке.
После этого прогоните приложение на реальных сценариях. Хороший минимум - 10-20 тестовых заказов, где вы специально создаете неудобные ситуации: клиент меняет адрес после оплаты, сборщик заменяет цветы из-за отсутствия на складе, курьер задерживается, фото не загружено, заказ отменяют за 5 минут до выезда. Проверьте, что в каждом случае ясно: кто отвечает, какой статус ставить и что видит администратор.
Следующие шаги после первого запуска
Когда базовый процесс работает стабильно, добавляйте функции, которые дают деньги или экономят время:
- отчеты: причины отмен, среднее время сборки, просрочки по курьерам
- акции: промокоды, подарки к заказу, условия бесплатной доставки
- повторные заказы: «заказать снова», шаблоны для корпоративных клиентов
- интеграции: оплата, SMS/мессенджеры, печать наклеек и чеков
- настройки каталога: сезонные подборки и быстрые замены позиций
Если вы собираете прототип через TakProsto, проще всего описать в чате экраны и правила (статусы, права, когда требовать фото, как назначать курьера), включить planning mode и согласовать логику до деталей. А когда процесс «устаканится», можно экспортировать исходники, развернуть проект с хостингом и подключить свой домен - и уже дальше развивать продукт без пауз. Если нужно, ориентируйтесь на takprosto.ai как на базовую площадку, где удобно итеративно добавлять функции по мере роста бизнеса.
FAQ
Что в первую очередь должно решать приложение для доставки цветов?
Минимально нужно провести заказ по понятной цепочке: приняли, собрали, проверили, передали курьеру, доставили. Если на каждом шаге есть ответственный и один общий статус, пропадают звонки «а где заказ» и снижается число ошибок.
Какие статусы стоит сделать в самом начале?
Хватит 6–8 статусов, которые отражают реальные действия: новый/принят, подтвержден, в сборке, готов (или упакован), передан курьеру, в пути, доставлен, отменен. Главное — чтобы статус менялся только после факта, а не «по плану».
Как не потерять важные комментарии и изменения по заказу?
Сделайте два блока: «примечания клиента» и «комментарий команды». Примечания клиента лучше фиксировать после подтверждения и не переписывать, а изменения в заказе оформлять отдельной записью, чтобы было видно, кто и когда согласовал замену или перенос времени.
Какие данные в заказе нельзя откладывать «на потом»?
Обязательны адрес с деталями (подъезд, этаж, домофон), окно доставки и отметка «не раньше/не позже», контакты заказчика и получателя, состав и цена на момент заказа, оплата и один текущий статус. Эти поля чаще всего спасают в спорных ситуациях и при передаче заказа между ролями.
Как правильно хранить замены цветов и фактический состав букета?
Разделяйте «что продаем» и «что реально собрали». В заказе фиксируйте выбранный букет и цену, а в фактической комплектации — согласованные замены и изменения. Тогда вы сможете честно объяснить клиенту, что именно уехало, и не сломаете учет при росте.
Нужно ли заводить отдельную сущность «доставка», если курьеры появятся позже?
Создайте отдельную запись «доставка», привязанную к заказу, сразу при оформлении. Курьера можно назначать позже, но у доставки должны быть окно, статус и плановое/фактическое время — так расписание и контроль просрочек появятся без переделки модели.
Как внедрить правило «фото перед отправкой» так, чтобы оно работало, а не мешало?
Определите одну точку контроля: после упаковки, но до передачи курьеру. Сделайте правило, что без загруженного фото заказ не может перейти в этап передачи курьеру, и храните у фото автора, время и короткий комментарий — тогда это реально снижает споры.
С чего начать расписание курьеров и назначение доставок?
Начните с простых правил: зоны/районы, смены, максимальная загрузка и ограничение для ближайшего часа. Затем добавьте экран дня со слотами и в карточке заказа кнопку автоподбора курьера с возможностью быстрой ручной замены и фиксацией причины переназначения.
Какие уведомления реально нужны, чтобы не создать «шум»?
Клиенту обычно достаточно подтверждения, сообщения при вопросе по замене, уведомления «курьер выехал» и «доставлено». Команде важнее уведомления о просрочках, переносах и смене курьера; если сообщений слишком много, люди перестают их читать и снова начинается хаос.
Что лучше всего попросить TakProsto сделать через чат на первом этапе?
Попросите сделать заказы, роли и права, статусы, историю изменений и обязательность фото для нужных этапов. Дальше добавляйте расписание курьеров, экран курьера с кнопками статусов и правила автоподбора; лучше идти маленькими шагами и проверять на 10–20 тестовых заказах с неудобными сценариями.