Architecture and APIs
Contracts, events and adapters you can inspect.
Dira is a set of TypeScript services behind strict OpenAPI 3.1 contracts, with every order change recorded as an event. Marketplaces, POS systems and infrastructure connect through adapters at the edge, so the core stays stable as your stack changes.
- order.state_changed
- order.replayed
- store.availability_changed
{ "id": "DR-48213", "channel": { "id": "ubereats", "externalId": "ue-7c1e9a" }, "storeId": "S-0142", "state": "IN_KITCHEN", "catalogVersion": "2026-11-02.3", "itemCount": 3, "items": [ { "sku": "BRG-DBL", "quantity": 1, "modifiers": ["NO-ONION", "ADD-CHEESE"] } ], "pos": { "checkNumber": "2041", "adapter": "pos-gateway" }, "totals": { "subtotal": 2840, "currency": "USD" }, "eventCount": 7}The stack, stated plainly.
These are the technologies Dira is built, tested and deployed on today.
- Services
Node.js and TypeScript on NestJS
Typed service modules share contract types with the APIs they expose, so a schema change shows up at compile time.
- Contracts
Strict OpenAPI 3.1
Interfaces are defined as OpenAPI 3.1 contracts and validated in CI before anything ships.
- Data
PostgreSQL with logical schemas
Orders, catalog, stores and finance keep separate logical schemas inside one system of record.
- Events
Event history and transactional outbox
A state change and its event commit in one transaction, then publish from the outbox.
- Packaging
Docker
Every service ships as a container image, and the same image moves from CI to deployment.
- Interfaces
React store app and enterprise consoles
The store tablet app is a progressive web app. Command, Catalog and Reconcile run as browser consoles.
New systems connect at the edge.
Adapters translate between an outside system and Dira's canonical model. A new marketplace or POS means a new adapter. Canonical orders, the catalog and every product built on them stay as they are.
Integration status by systemDelivery marketplace
Outside system
Marketplace adapters
Edge · owns the translation
Canonical core
Unchanged
- Uber EatsIntegrated
- DoorDashIn development
- GrubhubIn development
- Webhook signature validation
- Translation to canonical orders and back
- Status and cancellation sync
- Menu and availability publishing
- Payout report intake
THE CORE NEVER SEES Marketplace payload formats, signing schemes and rate limits.
Every event is signed, keyed and replayable.
Orders move through Dira as events. Each one is verified on the way in, deduplicated, retried when a dependency fails and kept for replay.
- Signature validation
- Inbound webhooks are rejected unless their signature verifies against the channel's secret. Nothing unverified reaches the core.
- Idempotency keys
- Each event carries a key derived from its source. A webhook delivered twice, or a retry that already succeeded, is recognized and ignored.
- Retries with backoff
- Calls to a POS or marketplace that fail are retried on a backoff schedule set per operation.
- Dead letter and exception queues
- When retries run out, the event moves to a dead letter queue and an exception is opened in Command with the stage, reason and attempts.
- Replay
- Operators replay from Command or through the API once the cause is fixed. Replays reuse the original key, so the effect applies once.
# Simplified marketplace webhookPOST /webhooks/ubereatsX-Signature: sha256=3b9f0c2e41d7Content-Type: application/json { "event_type": "orders.notification", "event_id": "ue-evt-55a1", "resource_id": "ue-7c1e9a"}Deployment
Runs on a Google Cloud reference deployment.
Dira's containerized services run on Google Cloud today. It is the environment the platform is built and tested on.
- Marketplace webhooks
- Store app
- Enterprise consoles
- Store POS systems
Cloud Run
Containerized Dira services · Docker images- API services
- Adapter services
- Event workers
Pub/Sub
Event transport from the outbox
Cloud SQL
PostgreSQL · logical schemas · outbox
Cloud Storage
Payout reports and exports
Redis
Cache and short-lived state
Current
Google Cloud
Services run on Cloud Run, events move over Pub/Sub, data lives in Cloud SQL for PostgreSQL, files in Cloud Storage, and Redis handles caching.
By contract
Other environments
An Azure implementation can be evaluated separately for an enterprise contract, with its own scope, timeline and validation. It is not part of the current deployment and not a one-click option.
Tested before it ships. Visible once it runs.
Changes pass contract checks and failure testing before release. In production, operators and your engineers can see what the platform is doing and who changed what.
How changes ship
- CI validation
- Every change is built, type checked and validated against its OpenAPI contracts in continuous integration.
- Automated contract testing
- Adapters and services are tested against the contracts on both sides of each boundary, so a breaking change fails in CI rather than in a store.
- Load and chaos testing
- The platform is load tested and chaos tested, with adapters and dependencies failed on purpose to exercise retries, queues and replay.
Observability and access
- Structured logs and traces
- Services emit structured logs and traces keyed to order, store and event IDs, so one order can be followed across services.
- Health checks
- Services, adapters and store connections report health, and degraded states surface in Command.
- Role-based access and audit history
- Access is granted by role across products, and every change, replay and manual action is written to audit history.
Security questionnaires, access model reviews and data-handling questions are worked through directly with your security team during evaluation.
API documentation is shared with customers and evaluation teams.
Tell us about your systems and what you need to review. The Dira team will share the documentation and walk your architects through it.
Request API documentationWhat evaluation teams review
- OpenAPI 3.1 contracts for orders, catalog, stores and events
- Canonical event definitions and webhook signing
- Adapter boundaries for marketplaces, POS and infrastructure
- The Google Cloud reference deployment
Questions from architects
Bring your architecture questions.
Walk through contracts, events, adapters and deployment with the Dira team.