Home/Case Studies/Food Delivery Platform
Back to case studies
Mobile Case Study

Food Delivery Platform: Customer App, Driver App, Admin and API

Customers order from nearby restaurants, drivers pick up and deliver, and restaurants run everything from a web dashboard. Three apps, one backend, and payments that go straight to each restaurant.

React NativeReactDjango RESTStripe ConnectPostGISiOS & Android
Customer app, driver app and Django backend of the food delivery platform

Three Sides, One Order

A delivery order passes through three sets of hands. The customer places it, the restaurant prepares it, and a driver brings it to the door. Each of them needs their own app, and all three have to see the same order in real time. That was the brief: a customer app, a driver app and a restaurant dashboard, all running on one API.

It was delivered over six milestones between June 2020 and May 2021.

The Customer App

Customer app: onboarding, nearby restaurants, cart, card payment and review

The customer finds a restaurant nearby, opens its menu and picks a size and add-ons for each item. The bag keeps a running total. Checkout has three short steps: contact details, card, and place order. The card number, expiry and CVV are checked on the phone before anything is sent, and the payment runs through Stripe.

After delivery the customer rates the order and leaves a review. Order history, chat with the driver, and push notifications fill in the rest.

The Driver App

Driver app: order queue, route with order details, delivery history, chat and profile

New orders reach the driver as a push notification. The driver sees the address, the items and the total, then accepts or rejects. An accepted order opens on a map with the route. When it is handed over, the driver marks it delivered, and the customer and the restaurant see the change at once.

Drivers also get their delivery history, chat with each customer, and a profile holding their vehicle, licence and bank details for payouts.

The Restaurant Dashboard

Restaurant admin dashboard with monthly sales, orders by status and the menu editor

Restaurants work from a React dashboard built on CoreUI, with Redux and redux-saga underneath. Orders are grouped as Pending, Chef Assigned, Ongoing and Delivered, and the restaurant assigns a driver from the same screen. The menu editor handles items, sizes and add-ons with drag-and-drop images. Monthly sales and an orders-by-status chart sit on the home screen.

One API Behind All Three

The backend is Django with Django REST Framework, split into apps for restaurants, orders, drivers and users. Order endpoints cover the whole life of an order: add, accept, decline, delivered. Restaurant and delivery locations are stored in PostGIS.

Payments use Stripe Connect. Each restaurant has its own connected account, so its share of every order is paid to it directly, and webhooks record each payment event. Sign-in works with email, Google and Apple, and push notifications go to both apps through FCM. The whole stack ships in Docker on Heroku.

A Note on the Images

The screens on this page were redrawn from the project source code. The layouts, colours, icons and food photos come from the apps themselves. Names, addresses, prices and dashboard figures are sample data.

Building a delivery app or a marketplace?

Customer app, driver or provider app, admin dashboard and split payments, on one backend. Baydot has built all four parts and can scope yours before you commit.

Book a Free Call