Security

Data isolation by design

Enforced in the code every request goes through — not just policy promises.

The four pillars

Security that lives in the request path

Four layers of protection, checked on every call your team and customers make.

Identity

Authentication

JWT access + refresh tokens for staff, riders and customers, with bcrypt hashing.

Authorization

Role-based access

Fine-grained permissions evaluated per action, scoped to role and branch.

Isolation

Tenant data isolation

Every query scoped at the data layer — cross-tenant access blocked on writes.

Admin plane

Separated platform admin

Superadmin access is entirely separate from restaurant-level access.

Under the hood

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