How Tolstoy built best-in-class restaurant delivery software

Delivery is a crucial part of any modern restaurant’s operations, especially in post-Covid world. At Tolstoy delivery constitutes 25% to 50% of revenue dependent on the time of the year.

From the very beginning we at Tolstoy decided to launch our own delivery system and not to work with the delivery aggregators. The main reason was our aspiration to provide an excellent customer experience and service – and this is not possible if a crucial part of the value chain is outsourced.

However, launching and operating an own delivery system entails several logistical challenges, which needed to be resolved:

  1. Order coordination – how to ensure the orders are properly tracked and not mixed up?
  2. Delivery within a reasonable timeframe – how to ensure the food arrives to customer hot and fresh?
  3. Route planning and staff planning – what are the best routes and how many people you need on shift to fulfill the demand?

As our core value is to solve operational challenges through technology, we decided to build TolstoyIS Delivery– delivery software module as part of TolstoyIS ecosystem.

TolstoyIS Delivery Module consists of 3 major interconnected elements:

  1. Delivery Manager Platform
  2. Riders App
  3. Riders Display

1. Delivery Manager Platform

Cloud platform, where managers can quickly access the live data from the delivery operations. The platform is both desktop and mobile friendly. Managers log in with their unique credentials. Everything being built in ReactJS with the help of NextJS.

Main screens of the Delivery Manager Platform are:

  • Live Dashboard
  • Metrics
  • Riders Management
  • Orders History

Live Dashboard


This is the main screen, that offers in-depth information about the status of the delivery operation.

  • Map with all the current pending, active and assigned orders displayed by colour (red for pending orders, yellow for active orders, ready to be taken and green for assigned orders) – consistent throughout the Riders Display and Riders App
  • Hourly Delivery Count comparison with last week on the same day to anticipate spikes in demand
  • Overview of all pending, active and served deliveries with quick information, such as the riding distance from the restaurant to the destination, deadline of the order, when it was paid, status and total delivery time for served deliveries. These are also colour graded (green = served in under one hour; yellow = late up to 10 mins; red = late more than 10 mins). The colouring helps the manager quickly identify potential bad customer experience and act on it in advance, being always a step ahead. order_details.png Once the manager clicks on an order, more in-depth information will pop-up, such as rider’s contact, customer contact, order summary and the timeline of the order, starting with the order placement, when it appeared on the kitchen counter, acceptance by the rider, leaving the restaurant, potential call of the rider to the customer and when it was delivered, together with the overall delivery time.



Metrics is the statistics module of the Delivery Manager Platform. This is an important tool for a manager to be able to anticipate the demand and to plan appropriate staffing. – Comparison of Number of Orders by Day of the week (e.g., Friday vs Friday for the selected period) – Average Number of Orders in a full week view – Total Deliveries per Month

Riders Management

The Riders Management overview offers the manager a quick way to add new riders into the system by creating profiles for them, sending them unique credentials for the Riders App and giving or revoking access to it

Orders History

A two-week order history for the managers to identify potential past order issues, leading to a greater overall customer experience. We are limiting the history to two weeks only to comply with the customer data protection laws.

2. Riders App

Android and iOS application for delivery, this is the main tool for our Riders to see all current deliveries and select the ones that they will deliver, letting on one hand the kitchen know who will take which order and on the other hand letting the customer know when the order is on its way.

From a technical perspective, the Riders App is built in ReactNative with the help of Expo framework. Advantages of this technology stack:

  • Cutting development complexity, by writing a single piece of code, written by a single development team, that gets translated into Android and iOS simultaneously, instead of having two teams – one dedicated to native Android development and a second one dedicated to native iOS development.
  • Future proof – when we need native specific features, we can always write only that specific component in native iOS code or Android code and will integrate perfectly with our existent app versions

orders.png order_details_riders.png

The app consists of 4 main components:

  • Map – here are all the current active orders, represented on the map, which helps riders see which orders are in the same area, so that they can bundle them and take them in one ride.
  • Pending Orders – the list with all the current orders, from where the riders can accept them. Upon accepting, the rider will be re-directed to the order details, where he/she can tap to navigate or tap to call the customer if necessary.
  • My Orders – list of currently assigned orders to be delivered.
  • Profile – rider’s profile.

3. Riders Display


A web-based app written in ReactJS with NextJS, the Riders Display is situated inside the restaurant room, where the delivery riders are waiting for the new orders. This is visible to everyone for a quick view and is divided into two sections: the current orders that need to be delivered and the map showing where the orders are situated throughout the city. Each order in the list is represented by the order number, the name of the rider that accepted the order and a percentage bar, letting the rider know when he/she can go to the pick-up point. Each order has a colour associated with it, as mentioned before, in the Managers Dashboard. This display is also used by the kitchen to manually notify and call the riders by simply tapping a button on the Counter Station. A notification will pop up accompanied by a notification sound, all handled in the backend with the help of Pusher

Future updates

At Tolstoy we are constantly working to improve our technical infrastructure and develop features that makes our business work even smoother. On the customer side we are currently working on a tracking feature, that lets the customer track the order progress, from the moment the order is placed and arrives on the Counter Station in the kitchen, throughout our Kitchen Workflows system, to the moment the rider picks it up and shows up at the customer’s doorstep, leading to an unprecedented transparency.

We also want to offer even more transparency to our employees, so we planned greater individual statistics for our delivery riders. This feature will let riders know how many hours they worked and how much money they earned each day/week/month just by having a quick glance in the Profile tab. This feature will be also present in the Managers Dashboard, exporting all the information with a click of a button, cutting the complex process of dealing with Excel sheets while doing accounting at the end of each month.

One last very important and exciting feature in the works is bundling orders for delivery based on the route and proximity. This means that riders will not have to bundle orders manually, but rather TolstoyIS will do it for them, by creating these bundles of orders that are in the same area or on the same way, which can be delivered together. Riders will be able to choose a bundle instead of multiple separate orders and in the kitchen the same bundles will appear, letting personnel know that the orders should be prepared together.

If you liked this article or have any comments or inputs, let me know what you think at! I will be happy to hear from you :)