Every Groovo order looks simple from the outside: you tap a few buttons, drive to the store, and someone brings your bags out. But between your finger and that boot-pop, eight things happen — and most of them in under a second.
When you open the Groovo app and browse products, you are seeing prices fetched in real time from our Sydney-hosted database. Categories, images, and stock status are all live. Your cart is stored locally on your device using Zustand — it does not touch the server until you check out.
Slots are managed by the store's admin and enforced server-side. When you pick a slot, you are seeing how many spaces are left in real time. If someone else grabs the last spot while you are looking at it, the slot becomes unavailable before you can book it.
When you tap "Place order", your app calls a Deno Edge Function running in Supabase. This function — not your phone — creates the Stripe PaymentIntent. Your card details never touch our servers. Stripe handles everything on their PCI-compliant infrastructure. The Edge Function fetches authoritative prices from the database so you cannot manipulate the amount on your device.
The Edge Function writes your order to the database. A Postgres trigger fires and the store's iPad app receives the new order via a live Realtime channel — within milliseconds. No polling, no manual refresh. The store knows about your order before your confirmation push notification has finished appearing on your screen.
A staff member claims your order on the tablet and starts packing. As they tick off each item, the order status updates. Your app is subscribed to a Realtime channel for your specific order ID. The moment the status changes to "Packing", your tracking screen updates — again, no refresh needed.
When packing is complete, you get a push notification: your order is ready. You can now drive to the store. The "I'm Here" button in your app becomes active.
You tap "I'm Here". The store's tablet shows your bay assignment. A staff member picks up your bags and walks to Bay 2 (or wherever you have been assigned). The whole handover takes under 3 minutes.
Your order is marked as collected. You can rate the experience in the app. The store sees the rating in their admin dashboard. Your car is already on the road.
That is it. Eight steps, most of them invisible, all of them designed to get you out of that car park as fast as humanly possible.