QuickBite is a full-stack food delivery app where AI drives real product behavior.
Customers order with natural language, discover nearby food with location-aware recommendations, and place orders in a chat-first flow. Drivers use an AI copilot to generate clear, professional messages while managing live deliveries.
- Customer and driver experiences in one platform
- AI-powered ordering assistant that can perform structured actions
- AI driver message copilot for ETA, delays, arrival, and contact issues
- Geolocation-based restaurant discovery with fallback data sources
- Real-time order messaging between customers and drivers
- Cart, checkout, promo discounts, and order history
- End-to-end ownership: product UX, API design, data modeling, and AI integration
- Practical LLM orchestration: prompt design, JSON action extraction, and safe fallbacks
- Real-world architecture: dual-role workflows, status transitions, and resilient backend behavior
- Built with a modern TypeScript stack and production-minded patterns
Customers can type requests like:
- "Find sushi near me"
- "Add 2 burgers from The Vortex Tucker"
- "Place my order to 120 Main St"
The assistant:
- Reads live restaurant menus and current cart context
- Understands user intent from natural language
- Returns structured actions when needed:
add_to_cartplace_order
- Falls back to conversational guidance when clarification is needed
If an item is not available in nearby QuickBite menus, the assistant can re-check nearby food options via Google Places and suggest closest matches with distance in miles.
Drivers choose an intent and get ready-to-send customer messages:
- ETA update
- Arrival message
- Delay notice
- Cannot reach customer
- Custom prompt
This reduces friction and keeps communication concise and professional.
- Customer logs in
- App detects location (with fallback + cache)
- Nearby restaurants are fetched and sorted by distance (miles)
- Customer orders using AI chat
- AI emits structured cart/order actions
- Order is placed and tracked live
- Customer can message driver in real time
- Driver logs in and goes online
- Driver views and accepts pending deliveries
- Driver updates order status through delivery lifecycle
- Driver uses AI copilot for customer messages
- Completed orders are tracked in history and stats
- Next.js App Router + React 19 + TypeScript
- Role-based UI for customers and drivers
- Context-based state management for auth and cart
- Next.js route handlers for auth, chat, orders, carts, restaurants, and driver operations
- API-driven business logic and validation
- Supabase (PostgreSQL)
- Tables for users, customers, drivers, restaurants, menus, carts, orders, and order messages
- Order status lifecycle and relational links between actors and orders
- OpenAI chat completions for:
- customer ordering assistant
- driver message copilot
- Prompted for structured, operational outputs where appropriate
- Browser geolocation with timeout and cache
- Multi-source restaurant pipeline:
- Supabase
- Google Places
- Overpass fallback
- Distances computed in miles via Haversine
- Next.js 16
- React 19
- TypeScript 5
- Tailwind CSS 4
- Supabase
- OpenAI API
- Google Maps Places API
npm installcp .env.example .env.localAdd required values to .env.local:
OPENAI_API_KEY=sk-proj-...
GOOGLE_MAPS_API_KEY=...
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...Optional:
OPENAI_MODELdefaults togpt-4.1when unset. Override it if you want to use a different model (e.g.OPENAI_MODEL=gpt-4o).
Run the SQL in supabase.sql using your Supabase SQL Editor.
npm run seedOptional: seed sample pending orders and test accounts for full delivery demos:
npm run seed:ordersTest accounts created by seed:orders:
- Driver:
dummy.driver@quickbite.test/password123 - Customer:
dummy.customer@quickbite.test/password123
npm run devdocker build \
--build-arg NEXT_PUBLIC_SUPABASE_URL=your_supabase_url \
--build-arg NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key \
-t quickbite .
docker run -p 3000:3000 \
-e OPENAI_API_KEY=your_key \
-e GOOGLE_MAPS_API_KEY=your_key \
-e SUPABASE_SERVICE_ROLE_KEY=your_key \
quickbite- LLM-integrated product actions, not just chat responses
- Fallback-aware architecture for location and restaurant discovery
- Dual-role domain modeling and delivery lifecycle states
- Type-safe full-stack implementation with modern React and Next.js
AI_IMAGE_SEARCH_SETUP.mdGEOLOCATION_FEATURE.mdDISTANCE_AND_IMAGES_UPDATE.mdPRODUCTION_DEMO_SETUP.mdTEAM_SETUP.md
Actively evolving and demo-ready, with AI-first product functionality already implemented across customer and driver workflows.