← All templates

Food Delivery

E-commerce · React + Node (Express) · 22 @molecule/* packages

DoorDash-like food delivery platform with restaurant menus, ordering, driver tracking, and real-time ETA — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • payments
  • notifications
  • realtime
  • geolocation
  • image-upload
  • push-notifications
  • subscriptions

Screens (16)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Restaurants /restaurants (signed in)
  • RestaurantMenu /restaurant/:id (signed in)
  • Checkout /checkout (signed in)
  • OrderTracking /order/:id (signed in)
  • Orders /orders (signed in)
  • Settings /settings (signed in)
  • Search /search (signed in)
  • Favorites /favorites (signed in)
  • Notifications /notifications (signed in)
  • OrderConfirmation /checkout/confirmation/:id (signed in)
  • OrderDetail /orders/:id (signed in)

Data model (16 tables)

  • addresses — id, user_id, label, street, city, postal_code, country, lat, …
  • delivery_tracking — id, order_id, driver_id, status, driver_lat, driver_lng, eta_minutes, started_at, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • driver_locations — id, driver_id, order_id, lat, lng, recorded_at
  • favorites — id, user_id, restaurant_id, created_at
  • menu_items — id, restaurant_id, name, description, price, category, dietary_tags, preparation_time, …
  • menu_modifiers — id, menu_item_id, name, options, required, max_selections, sort_order, created_at
  • notifications — id, user_id, type, title, body, payload, read_at, created_at
  • order_events — id, order_id, status, metadata, created_at
  • order_items — id, order_id, menu_item_id, name, quantity, unit_price, modifiers, special_instructions, …
  • order_reviews — id, order_id, customer_id, restaurant_id, driver_id, food_rating, delivery_rating, comment, …
  • orders — id, customer_id, restaurant_id, driver_id, status, subtotal, delivery_fee, service_fee, …
  • payment_methods — id, user_id, stripe_payment_method_id, brand, last4, exp_month, exp_year, is_default, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • restaurant_reviews — id, restaurant_id, user_id, order_id, rating, body, created_at
  • restaurants — id, owner_id, name, description, cuisine, address, phone, latitude, …

API (10 handlers)

  • \_hours api/src/handlers/_hours.ts
  • \_seed api/src/handlers/_seed.ts
  • addresses api/src/handlers/addresses.ts
  • delivery api/src/handlers/delivery.ts
  • favorites api/src/handlers/favorites.ts
  • menu api/src/handlers/menu.ts
  • notifications api/src/handlers/notifications.ts
  • orders api/src/handlers/orders.ts
  • payment-methods api/src/handlers/payment-methods.ts
  • restaurants api/src/handlers/restaurants.ts

Subscription tiers

free / pro / team — gated by: maxDelivery, maxMenu, maxOrders, maxRestaurants, advancedFeatures, canExport, retentionDays

Built from 22 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • STRIPE_SECRET_KEY Stripe secret API key for payment processing
  • STRIPE_PUBLISHABLE_KEY Stripe publishable key for client-side checkout
  • STRIPE_WEBHOOK_SECRET Stripe webhook signing secret
  • MEILISEARCH_API_KEY MeiliSearch admin API key
  • GOOGLE_MAPS_API_KEY Google Maps API key for geocoding and distance calculations
  • S3_BUCKET S3 bucket for restaurant and menu images
  • AWS_ACCESS_KEY_ID AWS access key for S3
  • AWS_SECRET_ACCESS_KEY AWS secret key for S3
  • MAILGUN_API_KEY Mailgun API key for transactional emails
  • MAILGUN_DOMAIN Mailgun sending domain

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing