Back to Case Studies

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

A three-sided food delivery product built on contract from June 2020 to May 2021: a React Native customer app, a React Native driver app, a React admin for restaurants, and a Django REST backend with Stripe Connect payouts and PostGIS locations. Six milestones.

react nativedjango rest frameworkreactstripe connectpostgisfood delivery
Customer app, driver app and Django backend of the food delivery platform
The whole platform: three customer screens, two driver screens, and the backend.

What it is

A delivery product with three sides. Customers order food from nearby restaurants. Drivers accept and deliver the orders. Restaurants manage their menu, orders and drivers from a web admin. All three run on one Django REST API.

The work was a contract with six milestones between June 2020 and May 2021.

Customer app

Customer app screens: onboarding, restaurants, cart, card payment, review
Onboarding, nearby restaurants, cart, card payment, and the review after delivery.
  • Restaurant search, menu categories, and items with sizes, add-ons and reviews.
  • A cart, then a three-step checkout: contact details, card, and place order.
  • Card payments through Stripe. The app checks the card number, expiry and CVV before sending anything.
  • Order history, a star rating and review after each order, chat, and push notifications.

Driver app

Driver app screens: order queue, route, history, chat, profile
Order queue, route with the order details, delivery history, chat, and profile.
  • New orders arrive by push. The driver accepts or rejects them, then marks them delivered.
  • A map with the delivery location and the full order.
  • Delivery history, chat with the customer, and a profile with vehicle, licence and bank details.

Restaurant admin

Restaurant admin web dashboard with sales chart, order status and menu
Dashboard and menu editor in the React admin.
  • React with CoreUI, Redux and redux-saga.
  • Orders grouped as Pending, Chef Assigned, Ongoing and Delivered, with search. Drivers are assigned from here.
  • Menu items with sizes and add-ons, with drag-and-drop images. Also driver accounts and monthly sales charts.

Backend

  • Django and Django REST Framework, with separate apps for restaurants, orders, drivers and users.
  • Stripe Connect: each restaurant has its own connected account and is paid out directly. Webhooks handle the payment events.
  • PostGIS for restaurant and delivery locations.
  • Order endpoints to add, accept, decline and mark orders delivered. FCM push to both apps.
  • Google and Apple sign-in. Deployed with Docker on Heroku.

Names, addresses and prices shown are sample data.

Building a Delivery or Marketplace App?

Customer app, driver app, admin and payments, all on one backend. I have built all four parts.