Back to Projects
ReactViteTypeScriptFullstack

Food Ordering App

A production-focused food ordering application with protected routes, media upload for restaurant images, Stripe Checkout integration, and reliable order lifecycle management. Customers can search restaurants, add items to cart, checkout via Stripe, and track order status. Restaurant owners can create and manage restaurants and menus, and view incoming orders.

The Problem

"Keeping order status accurate when payment confirmation is asynchronous (Stripe webhooks) is challenging. The platform also requires secure authentication, authenticated API routes, reliable media uploads, and robust order creation logic."

The Solution

Built a full-stack solution: Auth0 for authentication and protected routes, an Express API split by domains (user, restaurant, order), MongoDB/Mongoose persistence, Cloudinary for image upload, Stripe Checkout + webhook handling to transition orders from 'pending_payment' to 'paid', and a React frontend using React Query for server state.

Stripe webhook-driven order state
Protected owner and customer flows
Cloudinary-based media uploads
React Query for reliable server state
Stack:ReactViteTypeScriptNode.jsExpressMongoDBMongooseAuth0StripeCloudinaryMulterReact Query
// End of fileView All Projects ->