Skip to content
Safegen
H&S Platform
Security at Safegen

Your safety records are evidence.
We treat them that way.

Safegen holds the records you'd hand to an HSE inspector, an insurer or a court — so isolation, integrity and access control aren't features, they're the foundation. Here's exactly what we do.

Tenant isolation enforced in the database — and tested on every change

Every business record carries your organisation's id, and PostgreSQL Row-Level Security policies — set to FORCE, so even our own database owner can't bypass them — ensure queries can only ever see one tenant's rows. The policies fail closed: a request with no tenant context returns nothing. An automated regression suite asserts this isolation across every business table in our schema and runs in CI on every code change — a change that weakened isolation could not reach production.

Authentication built to resist abuse

Passwords are hashed with scrypt and never stored or logged in plain text. Sessions are server-side records delivered in httpOnly cookies — not bearer tokens living in browser storage. Credential endpoints (sign-in, sign-up, password reset) are rate-limited with counters stored in the database, so the limits hold across our whole infrastructure, not per server.

Hardened at the browser boundary

Every response ships a strict Content-Security-Policy, HTTP Strict Transport Security, clickjacking protection (X-Frame-Options DENY and frame-ancestors 'none'), MIME-sniffing protection, and conservative referrer and permissions policies. All traffic is TLS in transit.

Role-based permissions, checked on the server

Seven roles — from owner to auditor — gate every action through a single server-side permission matrix. Nothing relies on the browser hiding a button: every write is re-authorised on the server. Compliance-critical actions (corrective-action decisions, incident lifecycle changes) append to an audit log alongside the signatures captured at sign-off.

Infrastructure

The application runs on Vercel; data lives in PostgreSQL managed by Railway, with provider-managed encryption at rest. We keep our subprocessor list short — Vercel (hosting), Railway (database), Resend (transactional email) — and we'll enumerate it, with regions, in your data-processing agreement.

Your data stays yours

We don't train models on your data, sell it, or use one customer's records to benefit another. You can request a full export or deletion of your organisation's data at any time. Found a security issue? Email hello@safegen.co.uk — we read every report.

Security — Safegen · Safegen