ZavaPOS / SECURITY
The shop keeps its own data.
Isolation, server authority, staff controls and a backup path. The marketing site collects nothing.
One shop, one stack
Each store runs its own application container and its own MySQL container, with separate credentials, network, volumes and application key. There is no shared database and no shared Redis. A second shop cannot read the first shop’s tables because it does not share them.
The server decides
Totals, tax, stock movement, serial uniqueness, expiry, permissions and payment references are decided on the server. Hiding a button in the browser is not a security control.
Staff
- PIN sign-in for the counter.
- Roles decide who can discount, refund, move cash or read money reports.
- Sessions can be revoked from the staff screen.
Payments
ZavaPOS records cash, card, bank transfer, mobile money and other payments. It does not take card numbers and does not move money. A mobile-money reference (M-Pesa where available) is stored as text for reconciliation.
Backups
The store image includes a database dump and restore path. A dump goes to a file you control; a restore goes back into that shop’s database.
What we do not collect
The marketing site has no analytics, no cookies and no contact form database. The application does not create customer accounts because sales are walk-in.
Honest limit: edge enforcement, Turnstile and hosted observability are not live in this build. The local control plane, origin guard and per-shop isolation are implemented and tested; the public cloud path is still being finished.