Digital Restaurant Architecture

One connected platform beneath every order.

Dira connects delivery marketplaces, menus, POS systems, stores and finance through one shared core. Every product works from the same orders, catalog and event history, so teams stop stitching systems together by hand.

PATH

A marketplace order enters through its adapter, becomes one canonical order with its own event history, then reaches the POS, the store team and the consoles.

Channels
  • Uber EatsUber Eats: Integrated
  • DoorDashDoorDash: In development
  • GrubhubGrubhub: In development
Adapters
  • Marketplace adapters

    Webhooks · signatures · mapping

  • POS adapters

    Gateway contract · brand connectors

  • Infrastructure adapters

    Events · storage · cache

Shared corePostgreSQL · outbox
  • Canonical orders

    One order model for every channel

  • Catalog

    Versioned menus, prices, availability

  • Store identity

    Hours, channel mappings, POS binding

  • Event history

    Every state change, in order

  • Controls

    Roles, approvals, audit

Products and systems
  • POS and kitchen

    Dira Bridge

  • Store app

    Dira Store

  • Consoles

    Command · Catalog

  • Finance

    Dira Reconcile

Simplified platform architecture · marketplace status as of this release

A shared core under all six products.

Dira's products are views onto one set of records. An order, a menu or a store means the same thing in Connect, Bridge, Store, Command and Reconcile.

Canonical orders

Every marketplace order becomes one Dira order with a single schema, whatever channel it came from. Products read and update that record, never a copy of it.

One order model · channel IDs kept as references

Catalog

Items, modifiers, combos, dayparts and prices live in one versioned catalog. Each channel's menu is published from it and read back to confirm what went live.

Version history · scheduled publishing · rollback

Store identity

Each restaurant has one identity that carries its hours, channel mappings, POS adapter and pause state. Every order, menu and payout resolves to it.

Store groups · channel mappings · POS binding

Event history

Every state change is recorded as an event on the order or store it belongs to. Support, operations and finance read the same trail.

Ordered history · outbox publishing

Adapters

Marketplaces, POS systems and infrastructure connect through adapters at the edge. The core keeps one model while the systems around it change.

Marketplace · POS · infrastructure

Controls and operational data

Roles, approvals and audit history apply across products, and store health, exceptions and channel performance come from the same events that run orders.

Role-based access · audit history · operational KPIs

diraCommand
READ BY
order
DR-48213
channel
Uber Eatsext ue-7c1e9a
store
South Lamar S-0142
catalog
3 items · 4 modifiers v2026-11-02.3
state
In kitchen
pos
Check #2041 via POS gateway
events
7 recorded · last 11:42:07
payout
Awaiting report
Illustrative interface · sample data

Follow one order from intake to payout.

Step through a single Uber Eats order as it moves through Dira. Switch the scenario to see what happens when the store's POS stops answering.

SCENARIO
diraCommand
Dira Connect

The order arrives once

The Uber Eats webhook is verified and checked against its idempotency key, then converted into one canonical order. Items and modifiers are mapped to the catalog before the order is accepted.

Dira Connect
EVENT LOG4 events
  1. 11:42:03webhook.receivedSignature verified
  2. 11:42:03order.createdIdempotency key new · canonical order DR-48213
  3. 11:42:04order.mapped3 items · 4 modifiers resolved against catalog
  4. 11:42:05order.acceptedStatus synced to Uber Eats
Illustrative interface · sample data

Step 1 of 6: The order arrives once. 4 new events.

Every step writes to the same order and the same event history.

Reliability and operations

Built for the night the POS goes down.

Restaurant systems fail in ordinary ways: a store controller times out, a marketplace rejects an update, a menu mapping is missing. Dira is designed so each failure is caught, retried, visible and recoverable.

Read the architecture

Resilience

Idempotency
Every inbound event and outbound call carries an idempotency key. A duplicate webhook or a repeated retry never creates a second order or a second POS check.
Retries with backoff
Failed calls to a POS or marketplace retry on a backoff schedule. When retries run out, the work moves to an exception queue instead of disappearing.
Outbox events
A state change and its event are committed together, then published from the outbox. Downstream products never hear about a change that did not happen.
Exception queues
Anything that needs a person lands in one queue with the order, the stage, the reason and the attempts so far. Store teams are alerted when it affects them.
Replay
Operators replay a failed step from Command once the cause is fixed. Replays reuse the original keys, so the result is applied exactly once.
Health monitoring
Marketplace adapters, POS adapters and stores report health continuously. A degraded store is flagged before the next order arrives, not after a complaint.

Operations and control

Role-based access
Roles decide who can change prices, pause stores, replay orders or close a payout period, across every product.
Audit history
Every change and every replay is attributed and timestamped, from a menu publish to a manual POS entry.
Load and chaos testing
The platform is load tested and chaos tested, with adapters and dependencies failed on purpose to prove recovery paths work.
diraCommand
3 open
ORDER · STAGE · REASONACTION
  • DDDR-48212pos.submit

    Store controller timeout

    Legacy West · Retry 2 of 5

  • UEDR-48176order.map

    Modifier not in catalog version

    Domain North · Held for action

  • GHDR-48150status.sync

    Status update rejected by channel

    Montrose · Retry 5 of 5

Replays reuse each event's idempotency key.

Illustrative interface · sample data

Platform questions

See the whole platform run one of your orders.

Bring your channels, POS and store structure. We'll walk an order through Dira end to end.