Skip to content
Hamza Ahmad
Menu

Ordering app with trade pricing and payments

In production

GlazeFlow

An ordering platform for a UK sealed-unit glass manufacturer: configure a unit, see your trade price, pay online.

Customers configure a made-to-measure sealed glass unit to the millimetre, get flagged when building regulations require toughened glass, see their own trade price and pay online. Staff run orders from a Next.js admin panel.

Prices for Retail, Trade and Trade Plus customers are computed on the server from multipliers the staff can edit, so the app never decides what anything costs. Only the payment webhook can mark an order paid.

What I built

  • Flutter app for iOS, Android and the web (PWA), with guest checkout on web
  • 28 TypeScript Cloud Functions, including server-side pricing across three tiers
  • Hosted Square checkout behind a provider-agnostic payment layer, with an idempotent webhook
  • A 50-mile delivery check using server-side geocoding
  • Order lifecycle with push notifications and order emails
  • A Next.js staff admin on Cloud Run, and 285 automated tests

Stack

  • Flutter
  • Riverpod
  • Firebase
  • TypeScript
  • Cloud Functions
  • Next.js
  • Square
  • Google Geocoding
  • FCM
  • Resend

Screens

GlazeFlow: glass orders, priced and paid online
GlazeFlow: glass orders, priced and paid online
Configuring a made-to-measure sealed unit
Configuring a made-to-measure sealed unit
One unit priced for Retail, Trade and Trade Plus
One unit priced for Retail, Trade and Trade Plus
Checkout and order confirmation
Checkout and order confirmation
The staff admin panel
The staff admin panel
Pricing and payments stay server-side
Pricing and payments stay server-side