All worknestonexStart a project
SELECTED WORK/17/FULL-STACK BUILD

QuadQravings

Campus food delivery where one checkout splits meal points and a card, and one account switches between ordering and delivering.

Project
Full-stack build
Year
2026
Our focus
Mobile appsMarketplacePayments

How do you let someone pay for one order with campus meal points and a card together?

Treat it as a single order with two tenders rather than two payments. The order total is settled first against the meal-point balance, and only the remainder is charged to the card through Stripe. The customer sees one checkout and one receipt, and the restaurant is paid once.

QuadQravings on three phones: campus dining on the Malibu campus, a restaurant menu with the cart total pinned, and the courier delivery dashboard
QuadQravings · campus ordering and delivery

01 /Why is split tender harder than it looks?

Because the obvious implementation makes two payments, and two payments can half-fail. A meal-point deduction that succeeds while the card charge declines leaves a student short of points with no food, and reversing it after the fact is a support ticket rather than a transaction.

Modelling it as one order with two tenders keeps the decision in one place. The order knows what it is owed, the balance covers what it can, and the card covers the rest. If the card leg fails, nothing has been committed, because the balance is not spent until the order as a whole is settled.

02 /Why put the customer and the courier in the same app?

Because on a campus they are the same person at different hours. A student ordering dinner on Tuesday is a student with a free hour on Wednesday, and asking them to install a second app to earn is a barrier with nothing behind it.

One account carries both modes, and React Navigation switches between them rather than between products. That keeps a single identity, a single session and a single support story, instead of two accounts that have to be reconciled when something goes wrong.

03 /How do three sides stay in step on one order?

With one lifecycle that every side reads instead of three views that each track their own progress. It is a state machine: placed, preparing, ready, picked up, delivered, with the restaurant advancing it from the kitchen, the courier advancing it on pickup and drop-off, and the customer watching it move. A three-sided marketplace only works when the three sides cannot disagree about where an order is.

Push notifications follow that same lifecycle through FCM and APNs, so the phone update and the screen are reading from one source. When status lives in three places, the divergence always shows up to the customer first.

04 /How do couriers get paid without manual transfers?

Through Stripe Connect, so earnings are routed to the courier's own connected account rather than paid out by hand at the end of a period. Delivery is a job someone does for an hour between classes, and the payout has to be as automatic as the order.

Routing it through the payment provider also keeps the platform out of the business of holding and disbursing other people's money, which is the part that turns a side project into a compliance problem.

05 /What does a campus deployment need that a city one does not?

A much smaller map and a much higher bar for identity. Delivery is between dining locations and dorms on the Malibu campus, so routing is a short walk rather than a traffic problem, but the people on all three sides belong to one institution and the meal-point balance is university money.

It also has to be removable. Self-service account deletion is built in, both because the app stores require it and because a student who graduates should be able to leave without emailing anyone.

06 /What we delivered

  • Split-tender checkout across meal points and card
  • One app with customer and courier modes on one account
  • Real-time order status shared by customer, restaurant and courier
  • Stripe Connect courier payouts with automated routing
  • Restaurant and admin dashboards in Next.js

07 /The outcome

A campus delivery platform live at pepperdineeats.com and on Google Play, with an iOS build prepared for the App Store, covering ordering, dispatch, payment and payout for customers, restaurants and couriers.

08 /Build at a glance

ClientPepperdine University, Malibu campus
SidesCustomers, restaurants, couriers, plus admin
MobileReact Native 0.83, New Architecture (Fabric), Hermes
ModesCustomer and courier on a single account
PaymentsSplit tender across meal points and card via Stripe
PayoutsStripe Connect, routed automatically to couriers
OrdersOne lifecycle read in real time by all three sides
NotificationsFCM and APNs, following the order lifecycle
DashboardsNext.js restaurant and admin surfaces
Account controlSelf-service deletion, store-compliant
ReleaseLive at pepperdineeats.com and on Google Play, iOS build prepared for the App Store
View live project
COMMON QUESTIONS

Questions people actually ask

What is split-tender checkout?

Paying for one order with more than one source of funds. Here the order total is settled against a student's campus meal-point balance first, and only the remainder goes to the card through Stripe. It stays one order, one checkout and one receipt rather than two separate payments the customer has to reconcile.

Can one account be both a customer and a delivery courier?

Yes, and on a campus it should be. QuadQravings carries both modes on a single account and switches between them in the app, because the student ordering dinner is often the same student who wants to earn an hour later. Two accounts would mean two identities to reconcile for no benefit.

How are delivery couriers paid in a food delivery app?

Through connected accounts at the payment provider rather than manual transfers. QuadQravings routes courier earnings with Stripe Connect, so a completed delivery leads to a payout without an operator moving money, and the platform never has to hold or disburse funds itself.

How does a food delivery app keep order status in sync?

By keeping one order lifecycle that every side reads, rather than letting the customer app, the restaurant dashboard and the courier view each track their own progress. Push notifications follow the same lifecycle, so the phone and the screen can never disagree about where an order is.

Does QuadQravings work on both iOS and Android?

It is built as a single React Native codebase targeting both. The Android app is live on Google Play, and the iOS build has been prepared for App Store submission. The platform is online at pepperdineeats.com.

THE WORK BEHIND IT

Services this project drew on

THE THINKING BEHIND IT

Guides that cover this decision

THE VOCABULARY

Terms used on this page

ANOTHER PERSPECTIVE / NEXT PROJECTMATO

Groceries and household essentials delivered across cities — five connected products sharing one catalog, one order and one backend.