Desktop image
intro-circle
Client Request

A Kyiv flower studio sells bouquet subscriptions - a fresh bouquet delivered to a loved one once or twice a month. Orders came through a landing page and chats, couriers were arranged by phone, and nobody could tell where a bouquet was. We digitised the whole flow: ordering on the site and in Telegram, courier dispatch through the studio's own fleet or Uklon Delivery, live tracking for the customer and a CRM for the team.

Problem Solution

We kept the existing brand landing and added an order API behind it, a Telegram bot that takes the same order in an eight-step chat, a CRM with an order board and courier management, one-click Uklon Delivery dispatch with driver, ETA and cost returned by the API, a live map with couriers moving along their routes, and a public tracking page the customer receives in Telegram. The CRM ships in English and Ukrainian with light and dark themes.

Final Result

Every order now has a status, a courier and a tracking link, and the customer is notified in Telegram at each step. Staff see the day's deliveries and who is driving them on one screen, and peak-day deliveries go to Uklon without a phone call. The integrations run in sandbox mode until the client's Telegram bot and Uklon merchant credentials are connected, so the product was demonstrable end to end from day one.

Project Overview

The studio runs a subscription model: a customer picks a bouquet tier and a frequency, and the recipient gets flowers on a schedule. The brand is playful and personal - the landing talks to the customer in chat bubbles and invites them to Telegram. That set the tone for the product: ordering had to feel like a conversation, and the back office had to be as calm as the brand.

On the customer side we wired the landing page's order form to a new API and built a Telegram bot that walks through the same order in eight messages: bouquet, frequency, recipient, phone, address, time slot, confirmation. The bot remembers where each chat is, so a customer can pause and come back. Once the order is placed, the customer receives a tracking link and a message on every status change - confirmed, assembling, on the way, delivered.

On the team side we built a CRM in the brand's design language: an overview with the day's numbers and who is on the road, a kanban board from new to delivered, an order card with one-click courier assignment, a courier directory and a live map. Couriers can be the studio's own people or Uklon Delivery drivers - the CRM requests a driver through the Uklon API and gets back the driver, the car, the ETA and the price, and Uklon's status callbacks move the order forward automatically. Own couriers report through the Telegram bot.

The map shows every active delivery as a car moving along its route, with the same picture available to the customer on the public tracking page. Both the CRM and the tracking page are available in English and Ukrainian and in light and dark themes. Every integration has a sandbox implementation behind the same interface, so the whole flow works locally and in demos before real credentials are connected.
Client: Flower subscription studio, Kyiv, Ukraine
Industry: D2C retail, subscription commerce, last-mile delivery
Scope: Order API, Telegram ordering bot, CRM, courier dispatch, Uklon Delivery integration, live tracking
Stack: PHP 8.2, Symfony 7, MySQL, Twig, Leaflet, Telegram Bot API, Uklon Delivery API, Docker
Languages: English and Ukrainian UI, light and dark themes

Key Features We Implemented

Telegram Ordering Bot

An eight-step chat takes the full order - bouquet, frequency, recipient, address, time slot - and replies with a tracking link and status updates.

Order Board

Kanban from new to delivered with source, slot, price and the assigned courier on every card; one click opens the order with all actions.

Uklon Delivery Dispatch

Request a driver through the Uklon API from the order card - driver, car, ETA and price come back instantly, status callbacks move the order forward.

Live Courier Map

Every active delivery is a car moving along its route, with ETA and status refreshed every ten seconds for the whole fleet.

Customer Tracking Page

A mobile page the customer gets in Telegram: map with the courier, minutes to the door, step-by-step progress and a call button.

Own Fleet & Courier Directory

The studio's couriers with availability, vehicle and rating next to the Uklon drivers who already carried bouquets - assign whoever is closest.

Two Languages, Two Themes

English and Ukrainian interface with light and dark themes, remembered per user - the same brand palette in both.

Keep scrolling
Next project:
Jira-Inspired Custom Task Management System
Desktop image