All projectsCase study

Tapow.my: from menu browsing to delivery at the doorstep.

Full-stack restaurant ordering and dispatch platform — from menu browsing to Stripe checkout to Lalamove delivery at the doorstep.

Tapow.my — Restaurant ordering and dispatch platform

The Problem

Small restaurants in Malaysia needed an affordable alternative to expensive food delivery platforms that take 30%+ commissions. They wanted their own ordering system with menu management, payment processing, and delivery dispatch — without the platform fees eating their margins.

The Solution

I built Tapow.my: a complete restaurant ordering platform where vendors manage their own menus, customers order and pay online, and deliveries are dispatched automatically via Lalamove — all without per-order commissions.

Customer Ordering Flow

Customers browse categorized menus, add items with modifiers to their cart, and checkout via Stripe. They can also order through WhatsApp for a conversational experience. Order tracking shows real-time delivery status.

Vendor Dashboard

Restaurant owners log in to manage their full menu (items, categories, pricing, images), view and update order statuses, track order metrics and analytics via Recharts, and manage vendor notes. Role-based access control separates admin, vendor, and customer permissions.

Delivery Dispatch

When an order is ready, the system fetches a real-time delivery quote from Lalamove, dispatches a rider, and tracks the delivery. Dynamic fee calculation based on distance. The entire flow is handled via Supabase Edge Functions calling the Lalamove API.

Payment Processing

Stripe handles checkout sessions, with webhook-based payment confirmation and verification via dedicated Edge Functions. The system supports multiple payment flows — web checkout, WhatsApp-initiated orders, and direct payment links.

Customer Menu

Categorized browsing with item cards showing prices, descriptions, and add-to-cart buttons. Supports category tabs (Breakfast, Sandwiches, Fried Chicken, Mains, Milkshakes, etc.) with real-time cart updates.

Tapow.my customer menu — categorized food items with pricing
Tapow.my menu continued — more items across categories

n8n Workflow Automation

Two n8n workflows handle the WhatsApp ordering flow and real-time order status notifications — GPT parses natural language orders, and customers get WhatsApp updates at every stage.

n8n WhatsApp Order Handler workflow
WhatsApp Order Handler — GPT-powered order parsing, menu fetching, PDF generation
n8n Order Status Notifications workflow
Order Status Notifications — webhook-triggered WhatsApp updates per status change

7 Supabase Edge Functions

create-checkout

Stripe checkout session creation

stripe-webhook

Payment confirmation handling

verify-payment

Payment verification

lalamove-quote

Real-time delivery quotes

dispatch-lalamove

Rider dispatch + tracking

whatsapp-cart

WhatsApp ordering integration

generate-menu-pdf

Export menus as PDF

Key Features

  • Categorized menu browsing with item modifiers and images
  • Shopping cart supporting anonymous and authenticated users
  • Stripe checkout with webhook-based payment confirmation
  • WhatsApp ordering flow for conversational commerce
  • Lalamove delivery dispatch with real-time quotes and tracking
  • Vendor dashboard with menu CRUD, order management, and analytics
  • Role-based access control (admin, vendor, customer)
  • PDF menu export for offline/print use
  • Order metrics and analytics via Recharts

Impact

0% Per-order commission7 Edge Functions3 Payment flowsLive Delivery dispatch

Tech Stack

React 18TypeScriptViteTailwind CSSshadcn/uiReact Router v6React QueryReact Hook FormZodSupabasePostgreSQLSupabase Edge FunctionsStripeLalamove APIWhatsApp APIRechartsDigital Ocean
Your turn

Need something like this? Let's talk it through.