Where it was spent
Daily activity
Outlet performance
Enter or scan the voucher code
Balances are shared with everyone who opens this system — a deduction here is visible to all staff immediately.
Look up a voucher code to see its balance
Permission matrix
Programme settings
System build:
Default voucher value (SAR)
Session timeout (hours)
Report email recipients
Reports sent by email go to everyone on this list.
System name
Property name
Logo image URL (optional)
Voucher code prefix
Default validity (months)
Password expiry (days)
Everyone must set a new password after this many days. 0 turns the policy off.
Transaction alert emails
Every redemption, refund, credit and correction is emailed instantly to everyone here.
Roles & permissions
Tick what each role may do. Four Admin rights stay locked — user management,
creating and editing users, and settings — so the system can never be left with nobody able to
administer it. Your own change takes effect immediately; for everyone else at their next sign-in.
Outlets
Outlets shown here drive the redeem screen, the report tabs and every export.
An outlet that already has transactions cannot be deleted \u2014 deactivate it instead, so its history
stays intact while it disappears from new transactions.
Backup
One file holding everything — vouchers, balances, transactions, users,
outlets, roles and the audit log. Keep a copy weekly. To restore: stop the server, rename the file to
data.json, place it in the server's data folder, and start again.
Security
✓Passwords stored as salted PBKDF2-SHA256 hashes
✓Sessions expire and are re-checked every 30s
✓Role-based access on every screen and action
✓Sign-in throttled after 5 failed attempts
✓All input escaped before display (XSS)
✓Audit trail of sign-ins, money movements and user changes
✕Server-side authorisation — needs a backend
✕Tamper-proof audit log — needs a backend
This system runs entirely in the browser. The controls above stop mistakes and casual
misuse, and they enforce who can do what during normal operation. They cannot stop someone determined who
edits the page or the stored data directly. Moving the data and these checks onto a server with a database
is what turns them into real enforcement — and is also what CSRF protection, SQL-injection defence and
protected API endpoints would apply to.
Audit log
Every sign-in, redemption, refund, client change and user change is recorded here with the staff member responsible.