Security and trust

Workforce data is sensitive. Cirolearn treats access control as a database concern, not a user-interface concern.

Tenant isolation in the database

Every organization-owned record carries its organization. Access rules are enforced by row-level security in PostgreSQL, so one tenant can never read another tenant's data — even if an interface is bypassed.

Role-based access control

Roles and permissions are stored as data, assigned per organization membership, and checked server-side. The interface hides what you cannot use; the database refuses it.

Audit logging

Administrative actions are recorded with actor, organization, resource, before-and-after values and timestamp. Historic assessment, certificate and payment records are never overwritten.

Private file storage

Course content, assessment uploads, certificates and contract documents live in private storage buckets reached through short-lived signed URLs.

Authentication options

Email and password, magic links, password reset, email verification, Google and Microsoft sign-in — with an architecture ready for MFA and enterprise single sign-on.

Global by default

Country, currency, timezone, language and formatting are configured per organization. Nothing is hard-coded to a single market.