Troubleshooting and reference

Appendices

On this page

Appendix A: Permissions matrix

Roles: ADMIN, SUPER_ADMIN, MANAGER, SERVER, CASHIER, BARTENDER, CHEF, HOST. Manager-gated actions require a MANAGER (or above) PIN.

ActionServer / Cashier / Bartender / Chef / HostManager+
Ring & send orders, take payment✓✓
Open/settle tabs, work the KDS, tick checklists✓✓
Log wastage✓✓
Discounts, voids, comps, no-saleRequest only✓ authorise by PIN
Refunds—✓ (button hidden otherwise)
Terminal Settings, floor editing (arrange mode)—✓
Back Office (menu/staff/tables/reports/promotions)—✓
Create staff—✓ (only at or below their own role)

Enforcement is server-side; the client UI is a convenience, not the gate.

Appendix B: Demo tenant

Tenant demo-cape-town; Back Office login manager@aurapos.co.za / Aura-Pos123!. Demo PINs:

PINNameRole
1234AndyManager
2345ThandiServer
3456SiphoServer
4567NalediBartender
5678JohanChef
6789LeratoServer

Appendix C: Server configuration reference

For installers. The server is configured entirely through environment variables. Nothing is required to trade in dev; items marked prod must be set (and non-default) when AURA_ENV=production.

VariableConfiguresDefault
DATABASE_URL, DATABASE_USER, DATABASE_PASSWORDPostgres connectionCloud SQL via socket factory
CLOUD_SQL_INSTANCECloud SQL instance (project:region:instance)baked-in demo instance
DATABASE_POOL_SIZEConnection pool size10
JWT_SECRETSigns access tokens — proddev placeholder
AURA_ENVproduction enables boot guards + HSTSdev
AURA_SEED_DEMOSeed the demo tenant on booton in dev, off in prod
AURA_WEB_ROOTDirectory serving /admin/, /order/ and /pos//app/web
RECEIPT_SIGNING_SECRETSigns public receipt links (90-day validity) — proddev placeholder
RECEIPT_PUBLIC_BASE_URLPublic base URL used in receipt linkshttp://localhost:8080
YOCO_SECRET_KEY, YOCO_WEBHOOK_SECRETYoco card payments, refunds, tab pre-auth + webhookunset (disabled)
SNAPSCAN_API_KEY, SNAPSCAN_WEBHOOK_SECRETSnapScan payments + webhookunset
SNAPSCAN_MERCHANT_CODEEnables per-order SnapScan QR on guest orders (with the webhook secret)unset (guests see "pay at counter")
ZAPPER_API_KEY, ZAPPER_WEBHOOK_SECRETZapper QR payments + webhook (blank secret disables the webhook)unset
WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_ACCESS_TOKENWhatsApp Cloud API — receipts + booking confirmations (blank = sends no-op)unset
MAILJET_API_KEY, MAILJET_SECRET_KEY, MAILJET_FROMEmail (Mailjet) — checklist daily summariesunset
CHECKLIST_SUMMARY_TORecipient(s) of the checklist daily summary (comma-separated)unset
PORT, HOSTHTTP bind8080 / 0.0.0.0

Terminal-side (desktop) environment overrides: AURA_API_URL (server URL), AURA_PRINTER_HOST / AURA_PRINTER_PORT (receipt printer), AURA_DB_PATH (database file, default ~/.aura/aura.db).

Scheduled jobs: two endpoints are designed to be hit daily by a scheduler (e.g. Cloud Scheduler) with a manager token — POST /api/v1/loyalty/birthday-vouchers (issues the automatic birthday vouchers) and POST /api/v1/checklists/summary/send (emails the checklist digest).

Rate limits (per minute, built in): login 10 · token refresh 30 · guest QR ordering 600 · guest booking 60 per client IP · sync 600 · webhooks 1000.

Appendix D: For developers

Interactive API sandbox at https://<your-server>/docs (Swagger UI with one-click demo token, try-it-out). Full reference — auth flow, rate limits, error catalogue, webhook verification, idempotency, and the sync protocol — in docs/API.md. Realtime events stream on WS /api/v1/sync/ws (kitchen fired/bumped/ready/rush/recalled, table seated/cleared, payment captured).

Appendix E: Getting help

In-app: Back Office → Settings shows your app version and server; the terminal shows its version on the sign-in screen and in Settings → About. For support, contact support@aurapos.co.za with your tenant id and app version.

More in Troubleshooting and reference

All collections →
Still stuck? Mail support@aurapos.co.za or use the support page — include your venue name and what you were doing.