Case Study
QuickBite
A full-stack food delivery app that lets restaurants take orders, track deliveries, and grow their customer base — without lifting a finger for every transaction.

Background
The Problem
Tariq runs a popular Pakistani restaurant in Islamabad. His biryani sells out every Friday, his tikka platter has a five-star reputation on Google, and regulars drive across the city just for his karahi. But behind the counter, it's chaos. Orders come in through WhatsApp voice notes, someone's cousin manages a handwritten list of deliveries, and the phone rings non-stop during the dinner rush.
The delivery side was even worse. There was no way to track where the rider was, no way for the customer to know when to expect their food, and no record of what was ordered — so disputes about missing items had to be settled on trust. Refunds came out of his own pocket. His best customers were quietly switching to a competitor who had an app.
Tariq didn't need a tech co-founder. He needed a system that handled the ordering, the payments, the tracking, and the customer communication — so he could go back to doing the one thing he was actually brilliant at: cooking.
"He needed a system that handled the operations so the owner could focus on the food."
Solution
Core Features
Live Order Tracking with Animated Map
Customers watch their rider move toward them in real time, with an estimated arrival countdown. Built entirely with Flutter's CustomPainter — no Google Maps, no Mapbox, no surprise API bills. This single feature cuts 'where is my order?' calls to near zero.
Smart Cart with Add-on Customisation
Every menu item supports optional upgrades — extra cheese, a different size, a side dish. The cart calculates the total live as selections are made, so customers always know exactly what they are paying before they confirm.
Promo Code and Discount Engine
The owner can run timed promotions — first-order discounts, weekend deals, minimum-order offers — that apply automatically at checkout. Replaces the informal 'tell them I said 20% off' system that was impossible to track and easy to abuse.
Order History and Reorder in One Tap
Returning customers see every previous order with the exact items, add-ons, and total. Reordering their usual takes one tap. Repeat business increases without the owner doing anything.
Saved Addresses and Checkout Memory
The app remembers delivery addresses, preferred payment methods, and past restaurants. A returning customer can go from opening the app to placing an order in under 30 seconds.
Single Codebase for Android and iOS
Built in Flutter — one development budget covers both platforms, and any future update deploys to all users simultaneously. No separate native apps, no doubled maintenance cost.
Engineering
Key Challenges
Making the cart work across every screen without breaking
In a food delivery app, the cart is touched by more screens than any other feature — the restaurant page adds to it, the search page adds to it, the cart screen modifies quantities, and the checkout reads from it. The challenge was keeping all of these in sync without the cart resetting when the user navigated back, or allowing items from two different restaurants to mix.
A single CartNotifier using Riverpod's StateNotifier pattern — a single source of truth that every screen reads from and writes to, with a built-in guard that clears the cart and prompts the user if they try to add items from a second restaurant. No confused orders, no double-restaurant fulfilment nightmares, and a checkout total that is always accurate.
Building a real-time tracking experience without a paid map SDK
Integrating Google Maps or Mapbox adds cost, API key management, billing risk, and third-party dependency to every deployment. For a small restaurant owner, a surprise £200 API bill in month three would kill confidence in the product.
The tracking screen was built entirely with Flutter's CustomPainter — a hand-drawn street grid, an animated orange coverage zone, and a rider pin that moves smoothly using Flutter's built-in AnimationController. The pulsing location ring, the rider position drift, and the estimated arrival countdown all run at 60fps with zero external dependencies and zero ongoing cost.
Screens
Screenshot walkthrough


Location header, category chips, promo banner

Dark hero header, menu tabs, Add to Cart sheet

Item thumbnails, quantity steppers, discount row


Animated map, orange blob, rider pin, Journey timeline

Elite Member badge, Favourites and Orders stat cards
Results
The Outcome
Order placement time reduced from 8–12 minutes of WhatsApp back-and-forth to under 60 seconds via in-app checkout with saved addresses
'Where is my order?' support calls projected to drop by 80%+ — live rider tracking answers the question before the customer picks up the phone
Promo code engine replaces informal discounting — every offer is trackable, time-limited, and tied to a minimum order value
Reorder in one tap increases repeat purchase rate — returning customers replicate any previous order instantly
Full menu customisation captured digitally — add-ons and special options are recorded per order, eliminating disputes
Single codebase runs on Android and iOS — one development budget, simultaneous updates across all users