Modelling the money, not just the menu
Wallets are backed by a transaction ledger, promo codes track redemption per user so a discount cannot be quietly reused, and driver payouts are accounted separately from order revenue. Most food delivery builds stop at the cart. The genuinely hard part is that a single order moves money between a customer, a restaurant and a driver, and every one of those legs has to reconcile.