Quick path
Generate three role-based flows in one Expo app with ShipNative, wire Stripe Connect for split payments, use Supabase for orders and realtime status, Google Maps for addresses and ETAs. One metro, ten restaurants, one weekend of onboarding calls.
What a real food delivery app needs
A shippable MVP requires three role-based experiences:
- Customer: restaurant browsing, cart, checkout, order status, order history.
- Restaurant: incoming order list, accept / reject, mark ready, menu management.
- Driver: available orders, accept, navigate to restaurant, deliver, earnings log.
Everything else — ratings, promotions, schedule-ahead ordering, loyalty — is v2. Ship v1 or die inventing v3.
The AI prompt to start with
Drop this into ShipNative for a solid scaffold:
Build a food delivery app with role-based navigation: customer, restaurant, driver. CUSTOMER flow: - Home: restaurant list with cuisine filter and distance. Tap opens menu. - Menu: categorized items, add to cart, modifiers. - Cart / Checkout: summary, address picker, Stripe payment, tip. - Orders: active order with status steps (placed → preparing → out → delivered). RESTAURANT flow: - Incoming orders list, sorted by newest. - Tap: accept / reject / mark ready buttons. - Menu tab: toggle item availability. DRIVER flow: - Available orders within 5 miles. - Tap accept, map to restaurant, then customer. - Earnings tab with daily total. Use Supabase with row-level security. Orders table with status column. Dark theme, orange accents. Tab navigation per role.
For why prompt specificity matters, see PRD to App: Template, Structure, and Example Prompts.
Payments and commissions (the Stripe Connect play)
Food delivery is a marketplace, not a store. You take money from customers and split it three ways. Rolling your own is a compliance nightmare — use Stripe Connect with Express accounts for restaurants and drivers.
- Customer pays the full order amount via Stripe PaymentIntent.
- On delivery, your server triggers Stripe transfers: 85% to restaurant, 10% to driver, 5% platform fee.
- Stripe Connect handles KYC, tax forms (1099-NEC for drivers), and payouts for you.
- Use
expo-stripeor@stripe/stripe-react-nativefor the client-side payment sheet.
Maps, addresses, and ETAs
Google Maps is still the default for 2026. You need three capabilities:
- Autocomplete: Places API as the user types their address.
- Distance matrix: calculate delivery range and ETA from restaurant to customer.
- Map view: show restaurant pins, driver location.
react-native-mapsis the standard.
For MVP, skip real-time driver tracking. “Your driver is 8 minutes away” updating on status change is enough. Add live tracking in v2 with WebSockets and background location once you have revenue.
The real unlock: local launch strategy
The product is the easy part. The hard part is restaurant acquisition. For a single-metro launch:
- Pick a neighborhood, not a city. 10 restaurants in a two-mile radius beats 50 spread across the metro.
- Charge 0% commission for the first 60 days. Undercut DoorDash / UberEats aggressively to get logo rights.
- Offer free onboarding — you or a friend do restaurant menu photography in person.
- Launch with 3 drivers on a flat hourly rate for week one, then switch to per-delivery.
- Start promo-heavy with customers — $10 off first order, referral credits. The app is a one-time install, not a daily ritual.
Common mistakes to avoid
- Launching too wide — “delivery across the city” on day one guarantees cold cars and bad reviews.
- Building 15 cuisines of filter chips before getting your first restaurant signed. UI is cheap; restaurants are expensive.
- Skipping Stripe Connect and trying to handle splits manually. You will become an accidental money transmitter.
- Building real-time tracking in v1. Status updates are enough until you have at least 20 orders/day.
- Relying on one “all-in-one” no-code tool. Food delivery apps need mobile-native flows — start with a real native foundation via text-to-app AI.