Data isolation by design
Enforced in the code every request goes through — not just policy promises.
Security that lives in the request path
Four layers of protection, checked on every call your team and customers make.
Authentication
JWT access + refresh tokens for staff, riders and customers, with bcrypt hashing.
Role-based access
Fine-grained permissions evaluated per action, scoped to role and branch.
Tenant data isolation
Every query scoped at the data layer — cross-tenant access blocked on writes.
Separated platform admin
Superadmin access is entirely separate from restaurant-level access.
How we protect your data
Concrete practices, wired into the platform — not add-ons you have to configure.
Token-based sessions
Every session runs on short-lived JWT access tokens paired with refresh tokens, and credentials are stored as bcrypt hashes — never in plain text.
Per-action permission checks
Each request is authorized against fine-grained permissions, scoped to the user's role and branch, before it ever touches your data.
Query-level tenant scoping
Tenant boundaries are enforced at the data layer, so one restaurant can never read or write another's records — writes across tenants are blocked outright.
Separate superadmin plane
Platform administration lives on a distinct access path, entirely isolated from restaurant-level accounts and their data.
Have a security question?
Ask us how authentication, role-based access and tenant isolation work for your team — we're glad to walk through the details.
Talk to us