
About Project
This is the story of how to create a dark kitchen app for a fast-growing network offering food delivery and pickup in Chicago. It started with a complete rebuild of the existing platform and evolved into ongoing development of new features.
The product helped the company secure funding right after launch, and the company has continued to rapidly expand its coverage throughout the city. We're still actively involved in the development process, adding new features and ensuring the application runs smoothly and reliably.
Product Specifics
Dark kitchens are one of the fastest-growing segments in food tech. These are professional kitchen spaces without dine-in areas, designed exclusively for fast, streamlined delivery.
For customers, this means getting meals delivered in as little as 20-30 minutes. For businesses, the dark kitchen business model enables faster scaling, greater cost-efficiency, and the flexibility to quickly adapt to shifting demand. Kitchens are "dark" because they're not open to customers. Such apps allow users to order food online for delivery, without being able to walk into the restaurant.
According to Statista,the global dark kitchen market has already reached $58.61 billion, and by 2030, dark kitchens could account for up to 50% of the food delivery and drive-thru market.
Want to know more about 2025 food tech trends? Check out our full article
Goals and Solution
The first version of the Sizl app was built using Kotlin Multiplatform, a powerful but relatively uncommon technology that still lacks widespread library and package support. The change in CTOs also increased potential risks to product growth, including long-term maintainability, feature scalability, and quick iteration.
Our team was brought in to take on the challenge. Here's what we did:
- Rebuilt the entire dark kitchen app in React Native for better maintainability and faster feature deployment;
- Added two major features – Pick-up (for customer self-service orders) and Event Kitchen (for catering special event orders);
- Integrated analytics tools to provide visibility into user behavior and performance;
- Organized consistent design system;
- Adapted the platform to support multiple kitchen workflows, improving operational flexibility and conversion rates.
Find more formats to partner with our team
Key achievements
A few weeks after the new release, the Sizl team pitched the product to investors and successfully raised a seed round:
$3,6 M
total fundings
$12 M
post-money evaluation
Looking for a product team to bring your idea to life? Tell us about your project
How we met Sizl
We knew Alexey, Sizl's co-founder, before the project started. We interviewed him and planned to invite him to a roundtable discussion on food tech trends. Alexey had already successfully launched a large chain of Local Kitchen dark kitchens in a different region. His new project, Sizl, was developing quickly in the US market, but it encountered technical difficulties that could slow growth.
Looking for a team to rebuild Sizl, Alexey turned to our CEO, Maxim, for a recommendation. Since we had the necessary experience, food tech expertise, and technology stack, we agreed on terms and began developing Sizl.
Development Context
The beginning of development.
The state of the app
The Sizl team provided us with a fully functional backend and supporting documentation. Some background processes needed clarification, so we worked closely with the client to build a dark kitchen app.
From the beginning, the focus was on iOS, as the US market is primarily focused on this platform. We also completely reworked the design, because the initial version did not accurately reflect the app's actual functionality.

Development process
We gathered a team of three mobile developers to work on the project. One developer took care of the main tasks, while the other two joined us as needed. The team worked together on the main scope (menu and cart), which helped us consolidate all the expertise and knowledge on the project.
We organized the process according to Agile principles. First, we divided the functionality into four key epics: menu, authorization, cart, and support. Then, we broke them down further and prioritized them as user stories.
First, we rewrote the main user journey, from choosing a dish to placing an order. Other scenarios (such as password recovery or contacting support) were implemented later.
This approach helped speed up development and eliminate unnecessary steps. For example, we postponed editing the profile – the user can enter all the necessary contact information when placing an order.
In addition, by tracking story points, we knew exactly how much time was being spent on tasks of different sizes. This allowed us to regularly stay ahead of schedule and complete fixtures faster than planned.
Read more about our development approach
Design
Work on the application began with a complete redesign. There was no consistency between the mockups and the actual functionality: the interfaces in Figma often didn't match what the app had.
We updated the current screens and added missing states for checkout and display of the dark kitchen schedule, organized a full-fledged design system, and worked out the UX for two new features: self-checkout and event ordering.
We also created a guide for the dark kitchen marketing team on how to work with banners: we specified requirements for aspect ratio, text protection fields, and described complex cases where graphics and text are used together. See more of our UI/UX design cases here.

Have an idea for a project? Let's discuss it in a free consultation!
Olga V. Business Manager
Core functionality
Let's take a look at the basic user flow, integrations with third-party services and ready-made solutions, as well as special features that make Sizl different from other dark kitchens.
Authorization

Delivery Time

Guest-mode
Previously, users had to register to access the menu, and the onboarding was complicated and overwhelming. We've simplified the process: with the "Explore Sizl" feature, customers can now browse the menu and explore popular items that are likely to be available at all stations.
It is not possible to place an order in guest mode. Users must choose the "Select delivery mode" option. At the same time, the delivery address can be specified even before registration, and after logging into the account it will be automatically retrieved and synchronized with the created account.

Delivery Format
There are two options available to the user for receiving the order – Delivery and Pickup. When selecting delivery, the system automatically calculates the approximate time based on the address provided and displays it at the top of the screen.
If the kitchen is already closed, the user will see this even before placing the order. He can also immediately switch to self-delivery mode and choose which address to pick up the purchase.

Analytics
To track how users download the app, we implemented scanning QR codes that contain links to UTM tags. A user is redirected to the App Store and downloads the app.
Here we use the Branch.io service to record the moment when the user clicks on the link and match it with the ID that appeared in the system after installation.
Then all the data from Branch.io is transferred to the Amplitude service, which is integrated with Meta Advertising Offices. This allows to track conversions across campaigns and understand exactly which channels are performing best. You can find more analytics collection tools we use in this article.

Foodclick: mobile app for reservations, pre-orders and cashless payments in restaurants
Read our case study on the development of the Foodclick
Kitchen
The menu is organized like a constructor: all dishes are grouped by categories called "shelves". For example, "Popular", "Breakfast", "Soups" and others. If the kitchen is temporarily out of service, the user will see a banner with a notification.

For some dishes there is a flexible customization. First, the user chooses the base, then adds additional ingredients, each of which affects the final cost. The system also offers upselling options, such as sauces, toppings, and other dishes that complement the main order.

Checkout
Once all the dishes have been added to the cart, the user has a few steps to go to checkout. In the US, it is common to leave orders at the door, so we have provided a separate field for comments and delivery requests.

Name and phone number are automatically taken from the account settings. Next, user needs to select the delivery mode: standard (no price is specified) or priority – with expedited delivery for $1. This is a little trick: in fact, both options are paid, but such a small difference in delivery motivates the user to choose the faster option, thereby increasing the average check. As a result, the customer gets a more convenient delivery format, and the business gets additional revenue.

You'll find more nuances of food delivery app development
Additional Check
Because the availability of dishes in the Dark Kitchens format can change instantly, we added an additional checkout step immediately after a user confirms an order. The system sends a request to the backend. If some items are unavailable, a pop-up will appear with a list of unavailable dishes.

Sometimes users forget to update their address during checkout. That's why we send a warning if the current location differs by more than 500 meters from the location specified in the order.
More peculiarities of developing authorization and shopping cart update tools
Payment
To pay for an order, a user needs to link a card to the Sizl app. We also organized integration with Apple Pay to make the process as fast as possible. Users can also pay for part of their order with bonuses accumulated through the loyalty program.

In addition, we've added a separate screen with animation so the user can see that the payment is in process. There is also a cashless tipping option with fixed percentages to choose from.

Web payments. What do you need to know?
Read our articles about organizing online payments for your app
Delivery Status
Once the payment has been received, the user returns to the screen with the status. A map with the courier's movement is also displayed here, which is updated in real time.
In case of pick-up, the "I'm here" button appears: the user should press it when he arrives at the station to pick up his order and even share his geolocation with the station.


Yapoki: mobile delivery app for the future of the Enterprise
Read our case study on app development for a fast-growing food delivery app
Event Kitchen
From yoga in the parks to festivals and large conferences, Chicago hosts many events every day. Together with Sizl, we have developed a special option for ordering food for attendees.
Some of the meals can be paid for by the organizer as a welcome bonus. To place an additional order, an attendee simply scans a QR code and a special menu created for the event opens. All orders will be displayed in the pick-up section at checkout and the menu will be available until the end of the event.
The organizer, in turn, must prepare a pick-up area where couriers will deliver the orders. For logistical convenience, each order is assigned a unique number. This helps to determine exactly which order belongs to a particular attendee.


Want to improve your app? Come for a consultation and we'll suggest ideas!
Olga V. Business Manager
Menu Management
Menu management is organized through the admin panel. The manager in charge of the kitchen at a particular station can edit the filling of "shelves".
The administrator can also use filters to stimulate additional sales: when selecting the main dish, the user is automatically offered a drink that is most often ordered with it, based on analytical data.
It is also possible to remove dishes from the menu through the administration if some ingredients are out of stock, simply by setting the item to stop.

Additional Features
The role of gamification tools and customer support in ghost kitchen software.

Loyalty Program
Users receive 10% cash back on every order and can also participate in the referral program: points are awarded for invited friends and their first purchases. The accumulated points can be used to pay up to 50% of the cost of the next order.
For more loyalty program ideas and formats, click here.

Emotica
There are additional game mechanics within the app where users can complete simple activities, earn points and spend them on orders. This gamification increases conversion rates and keeps users in the app. The games were pre-built in Unity and we simply integrated them into the app using WebView.
We talked about integrating Unity code with React Native here

Support Chat
Testing
During the rebuild, we not only added new functionality, but also fixed many bugs that had accumulated in the previous version. For example, two images would come from the backend, but only one would be displayed. When selecting toppings and garnishes for dishes, some items were not displayed correctly.
Some parameters were ignored in the menu builder, which caused banners to not appear in the right sections or in the wrong colors. Push notifications did not arrive either. It turned out that the code on the iOS backend was written using different registers, which caused errors.
To track bugs, we connected Sentry. This service that logs all errors in the application. When a bug occurs, it is automatically registered in the system and the development team is immediately notified.
We talked about the importance of testing for mobile app development here
Used technologies
Frontend: React Native
Design: Figma
Additional services: Branch.io, Amplitude, Getstream.io, Sentry.io
Team






Timelines
The complete rebuild took 2.5 months. The menu and authorization modules were the quickest to rewrite. Most of the time was spent on the shopping cart logic. Another month was spent on full testing and debugging.
Now we are actively developing the product and working on a separate application for drivers. Implementing new features takes an average of 1-2 days. For a fast-growing company like Sizl, speed is critical. The company aims to reach a wide audience and optimize delivery costs, which directly affects revenue.
We are constantly looking for bottlenecks in the system and thinking through scenarios in which the application can best serve the needs of both the darkkitchens network and its users. All while minimizing the impact on the company's operational processes.
3,5
months
The essence of the project
Sizl is an example of dark kitsch with great potential that has every chance of expanding beyond Chicago to other cities and states in the US. As part of the project, we solved problems on three levels and provided various cloud kitchen benefits.
Business. We developed functionality useful to anyone working in the food delivery and subscription services industry. The application includes a convenient meal builder, combo sets, a quick checkout process, address management, a referral program, and gamification elements with built-in games.
Users. We created an intuitive app that allows users to order food quickly and effortlessly. The app is suitable for daily use as well as one-off orders, including event orders and corporate catering.
Technical team. We migrated the app from Kotlin Multiplatform to React Native, cleaned up the design layouts and built a stable architecture to provide a solid foundation for further development of the project. This allowed us to accelerate the introduction of new features.
The result is a flexible and scalable platform that supports rapid growth and business adaptation to changing market conditions.

Upcoming product enhancements
Here are some of the features we're currently working on:
Multilingual localisation
According to the Census Bureau, more than 350 languages are spoken in the US, and about 22% of residents speak a language other than English at home. By supporting multiple languages in the app, you can reach a wider audience and make it more accessible to users from different countries.
“I want Sizl here!”
Group orders
Upsale tools
Catering
Automatic equipment calculation