RekaDijo connector
RekaDijo is TechTur's quotation-first food marketplace. Sellers (home kitchens, takeaways, caterers) run their kitchens and walk-in sales on TechTur POS, with their RekaDijo menu and orders already there.
Status: the POS side is implemented and tested (launch tickets, consent and linking, product sync, orders, webhooks — apps/api/test/platform.test.ts). The RekaDijo-side mapping is implemented and unit-tested in examples/rekadijo-connector/ against RekaDijo's real schema. Installing it into the RekaDijo application (a feature branch there) and approving the live connector application are pending.
Identity
| RekaDijo | POS |
|---|---|
User.id |
externalUserId |
Business.id |
externalBusinessId |
Business.ownerId === user.id → |
businessRole: "owner" |
BusinessStaff.role = MANAGER |
"manager" → Store Manager |
BusinessStaff.role = KITCHEN / FRONT_OF_HOUSE / DRIVER_COORDINATOR |
"staff" → Cashier |
RekaDijo's dashboard gets a POS & Store Operations entry in the vendor navigation, shown to VENDOR_OWNER and active BusinessStaff. It posts to a RekaDijo server route that calls createLaunchTicket for the signed-in user (read from RekaDijo's own getCurrentUser(); never from the request) and redirects. RekaDijo's rekadijo_session JWT never leaves RekaDijo.
Catalogue (RekaDijo owns it)
| RekaDijo | POS sync payload |
|---|---|
MenuItem.id |
externalId (product and its single variant) |
MenuItem.name, description |
name, description |
MenuItem.basePrice (VAT-inclusive display price) |
variants[0].price |
MenuCategory |
category { externalId, name } |
first Media image |
imageUrl |
MenuItemOption grouped by name |
modifierGroups[], each choiceLabel + priceDelta a modifier |
isActive && !suppressedAt && !deletedAt |
isActive |
| — | trackStock: false by default: home kitchens track daily capacity, not inventory (RekaDijo H-14) |
Sync on menu create/update/delete and once nightly.
Orders
RekaDijo's quotations stay in RekaDijo. When an Order has a SUCCESS payment, RekaDijo pushes it with externalRef = Order.id, payment.provider = "rekadijo", payment.reference = Payment.id, any discountAmount as a fixed order discount, and payment.amount = subtotal − discountAmount — the seller's food value. Delivery fees and tips stay with RekaDijo and the driver. RekaDijo keeps collecting payment and settling to sellers; in POS the money sits in "Other payments clearing" until the seller records the settlement. Fulfilment updates (IN_PREPARATION → preparing, READY → ready, OUT_FOR_DELIVERY, DELIVERED) are mirrored with setFulfilment. Cancellations of paid orders are refunds and stay governed by RekaDijo's dispute rules.
Stock
Optional. A seller who tracks stock for instant-order items can let POS own it; RekaDijo then updates BranchItemAvailability.stockQuantity from inventory.changed. RekaDijo must not decrement its own count for orders it pushed.
Data ownership
RekaDijo: names, descriptions, images, categories, menu prices, active flags. POS: in-store stock, cost prices, barcodes, in-store sales.