System overview

Product architecture

How Orda turns a QR scan into a brewing cup in under three minutes.

Customer journey

Step 1

Scan

QR at table opens menu

Step 2

Browse

Live menu by café

Step 3

Pay

Card or wallet

Step 4

Brew

Café receives

Step 5

Pickup

Status: ready

System overview


   ┌─────────────┐         ┌─────────────┐         ┌──────────────┐
   │  Customer   │  scan   │   Edge      │  RPC    │   Orders     │
   │  (Mobile)   │────────▶│   Gateway   │────────▶│   Service    │
   └─────────────┘         └─────┬───────┘         └──────┬───────┘
                                 │                        │
                  ┌──────────────┼────────────┐           ▼
                  ▼              ▼            ▼     ┌──────────────┐
           ┌────────────┐  ┌──────────┐  ┌────────┐ │  Rules       │
           │  Menu      │  │ Payments │  │  Auth  │ │  Engine      │
           │  Service   │  │ (Stripe) │  │ (JWT)  │ └──────┬───────┘
           └─────┬──────┘  └────┬─────┘  └────────┘        │
                 │              │ webhook                  ▼
                 ▼              ▼                  ┌──────────────┐
           ┌──────────────────────────┐            │  Café        │
           │   Postgres + Realtime    │◀───────────│  Dashboard   │
           └──────────────────────────┘            └──────────────┘

Rules engine

Each order is evaluated by a small deterministic rules engine that handles inventory, café hours, capacity, and promotions before confirmation.

Inventory check

Reject items marked sold-out by the café staff in the last 60s.

Café hours

Validate the café is currently open and accepting orders.

Capacity guard

If active orders > threshold, queue with realistic ETA.

Promo eligibility

Apply ORDA10 / first-order / loyalty stacking rules.

Payment policy

Pre-auth on card; verify wallet token signature.

Fraud signals

Velocity check, device fingerprint, and IP geo.

Data flow

1. Payment intent

Client creates a PaymentIntent via /api/checkout; the rules engine validates the cart.

2. Webhook confirm

Stripe → /api/webhooks/stripe → mark order paid → publish event to café.

3. Realtime fan-out

Order broadcast to café dashboard, KDS printer, and customer device.

4. Status updates

Café advances state (pending → preparing → ready → completed).

5. Analytics pipeline

Events stream into the warehouse for dashboards & cohort analysis.

Edge runtime

Globally-distributed serverless for <80ms TTFB anywhere.

Postgres + Realtime

Row-level security, live order pushes to dashboards.

PCI-DSS scope

Payment surfaces tokenized, never touching our servers.