Security · the receipts

Multi-tenancy enforced at the database, every change immutably logged, every permission checked twice. The page your IT director should bookmark.

365

permissions across 58 modules × 8 actions

16

roles, each permission-checked twice

100%

of tenant tables under Row-Level Security

AES-256

at rest · TLS 1.3 in transit

Six pillars

Security the database enforces.

Not a policy page — six guarantees wired into PostgreSQL, the auth layer, and every API call.

Bank-level · school-owned

Multi-tenancy

Database-level isolation

Row-Level Security enforced at PostgreSQL — every tenant table partitioned by school_id. A bug in application code cannot leak across schools. The database refuses.

Audit

Immutable, signed audit log

Every sensitive mutation: who did it, when, with full delta. Write-once trigger. Signed. Searchable by super-admin. Schools can export their full audit trail at any time.

Permissions

365 permissions × 16 roles

43 modules × 8 actions + custom. Pre-seeded role mappings, per-school override, program-scoped permissions. Every API call is permission-checked at the database and the client.

Auth

MFA + recovery codes

Email + password, magic link, Google OAuth, school code login, biometric mobile, TOTP 2FA with recovery codes. Failed-MFA bailout signs the user out — no AAL1 bypass.

Data

Yours, always

One-click full export to CSV / JSON / SQL dump. Per-user GDPR deletion. School-branded PDFs (report cards, transcripts, certificates) downloadable. We don't keep what you don't want us to.

Encryption

At rest and in transit

TLS 1.3 in flight, AES-256 at rest. Cloudinary for file storage. Hosted in the region you choose, so your data stays in the jurisdiction your ministry requires.

Residency & compliance

The answers your RFP asks for.

Data residency

Hosted in the region you choose, so your data stays in the jurisdiction your ministry requires.

Export & deletion

One-click full export to CSV / JSON / SQL dump, plus per-user GDPR deletion with a verification flow. We don't keep what you don't want us to.

Impersonation, logged

Super-admin impersonation is fully audit-logged with reason capture — support can help without ever working in the dark.

Sub-processors

Supabase for the database, Cloudinary for file storage — a short, named list, not a sprawl of unvetted vendors.

For deeper documentation — DPIA, a SOC-style trust report, or region-specific data-residency configuration — contact our security team.