SONAN DIGITAL RMS
Loading…
SONAN DIGITAL RMS
Loading…
How it's built
For the engineers and technical buyers in the room: what keeps the money right, each business's data separate and every change on record.
Amounts are whole cents, never floating point. Checkout, refunds, payment-link payments and trade-in corrections run as Postgres transactions that validate, apply and write the audit row together — or change nothing. Idempotency keys stop a double click or a retried webhook from charging twice.
Every table carries the organization and is guarded by row-level security; invoice and ticket numbers come from per-business counters. Isolation is proven by SQL test suites that sign in as real users of two businesses, not promised in a document.
Shopify stock changes go into an outbox that a worker drains every minute, claiming rows with skip-locked reads, merging duplicates and retrying after 1, 5 and 15 minutes, 1 hour and then every 4 hours, and parking a row after 8 tries; orders that cannot be matched wait in a mismatch queue. Stripe and service-desk webhooks are signature-checked and applied exactly once.
No owner password is typed on a shared counter. A request names the action, the record, the amount and the employee; the database accepts it once, before it expires, and keeps the record.
Next.js 16 and React 19 with TypeScript in strict mode, Supabase Postgres, Vercel, Stripe Checkout and Terminal, Shopify Admin API, Anthropic and OpenAI models.
Every release passes a type check, lint, more than 2,300 unit tests, Playwright end-to-end specs and more than 45 SQL suites run against a real Postgres.
Who did what, when, and why — kept with the record it changed.

We are happy to go through the data model, the isolation tests and the release gates with your team.