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.