SONAN DIGITAL RMS
Loading…
SONAN DIGITAL RMS
Loading…
Repair & retail, one system
RETAIL & SERVICES MANAGEMENT SYSTEM
Tickets, point of sale, payments, inventory with serials, trade-ins, Shopify and day close for shops that fix devices and sell them. Built by SONAN DIGITAL.

Everything the shop runs on
Each one below is a screen in the product today — not a roadmap.






Tickets
A board column per status — including the ones you create — and a calendar that shows device, customer and what is still owed.

Your layout, your theme
Each person picks how RMS looks on their own screen — the menu along the side or across the top, light or dark. Try it:

Walk-in to day close
01 · INTAKE
Find the customer as you type, pick the device and the problem, start the ticket.

02 · ESTIMATE
Quote the repair; the customer approves by e-mail or signs online.

03 · REPAIR
The bench moves the ticket across the board; parts come out of stock.

04 · PAY & CLOSE
Split tender, receipt with your logo, then count the drawer at close.



On the floor
The same app in any browser — check today's tickets, look up stock at the other store, see the day's sales. Nothing to install.
How it's built
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.
We walk through tickets, the counter and day close with your own products and repairs.
SONAN DIGITAL RMS needs NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY in .env.local (see .env.example). Use a synthetic / non-production project only. The shell remains available without credentials.