TLS 1.3 everywhere
All web traffic and API calls are encrypted with TLS 1.3. HSTS is enforced; HTTP requests redirect to HTTPS. No plaintext fallback paths exist.
Healthcare data deserves more than vague trust statements. Below is the inventory of the controls we have implemented — written so an auditor or your compliance officer can map it to a checklist.
All web traffic and API calls are encrypted with TLS 1.3. HSTS is enforced; HTTP requests redirect to HTTPS. No plaintext fallback paths exist.
Data is hosted in South Africa and encrypted at rest with AES-256. Backups carry the same encryption.
User passwords are bcrypt-hashed at cost 10 before storage. Password reset tokens are SHA-256 hashed; the raw token only ever exists in the email link.
Authentication is via short-lived JWTs signed with a server secret rotated quarterly. All authenticated API endpoints validate the signature and expiry.
Attendance verification uses a rotating QR code containing a JWT signed by the platform with a ~2 minute expiry. Scans outside the scan window or with a stale token are rejected; valid scans are persisted as append-only rows that gate booking completion.
Every booking, message, payment, QR attendance scan, geofence check-in, and admin action is logged with a SHA-256 hash linking to the previous entry. Tampering is detectable by re-computing the chain.
When a professional checks in and out of a shift, the system Haversine-compares the two coordinate pairs and the time gap. A jump greater than 50 km within 2 hours flags the row for admin review without blocking the checkout — supporting context for any subsequent dispute.
Audit logs are exported nightly to write-once (WORM) storage hosted in South Africa, with a 7-year retention policy required by SA financial regulation.
External penetration testing against the production API and web app, annually at minimum. No Critical findings open; the executive summary is available on request to security@btlocum.com.
Static analysis and software composition analysis run on every pull request. Deploys are blocked on Critical findings; High findings are reviewed by a security engineer within 24 hours.
Every API endpoint is scoped to a user role (locum, facility admin, facility staff, platform admin). Cross-tenant data access is prevented at the database query layer, not just the API.
Payment escrow is held by PayFast, a Financial Sector Conduct Authority-licensed FSP. Funds never sit in Locum company accounts. Facilities fund escrow at shift-post time, before any professional can apply.
Critical-window cancellation cash penalties are settled against the professional's next per-shift payout before the transfer is made. Each settlement writes an idempotency-protected audit row so a re-run cannot double-deduct.
Push notifications use VAPID-signed Web Push. The private key sits in a server-side secret manager; the public key is exposed by /push-subscriptions/vapid-key. Dead subscriptions returning 404/410 are pruned automatically on the next send attempt.
72-hour breach notification target to affected users and the Information Regulator. Three-tier incident severity model; on-call engineer paged within 5 minutes for Sev-1 issues.
Email security@btlocum.com with a clear description and reproduction steps. We acknowledge within 24 hours and follow responsible disclosure principles. Researchers acting in good faith are protected — we do not pursue legal action for reports that follow our disclosure policy.
Detailed disclosure policy and PGP key available at /security/disclosure.