Security & compliance
All changes audited Β· step-up auth required for editsPlatform hardening in one place: traffic protection, HTTP security posture, supply-chain pipeline, release quality gates, and the versioned legal documents every tenant must accept.
Rate limiting & DoS protection Β· adaptive level: NORMAL (1.0Γ)
Login brute-force protection
Exponential per-IP backoff 1s β 30s on failed logins. 3 IPs currently locked out.
Cloudflare origin protection
Real client IP from CF-Connecting-IP. Direct-to-origin requests without the CF header β 403.
β Enforced in production Turnstile bot protection
All public POST endpoints (auth, signup, contact, feature requests) + honeypot. Fails open after 5 s CF timeout.
β 14 endpoints covered Security headers & CORS
CORS allowlist Β· per environment
Wildcard origins rejected in production (validated at boot).
SRI asset registry (CDN integrity)
3 registered assets Β· sha384 Β· public manifest served to apps.
fonts.cssβ verified 2026-07-01
turnstile-widget.jsβ verified 2026-07-01
maps-embed.jsβ verified 2026-06-28
security.txt (RFC 9116)
Served on all public domains Β· PGP key + disclosure policy (en/sv/fr/es) + hall of fame. Weekly CI check on the Expires field.
Expires2026-12-31 Β· β 182 days left
Supply-chain security pipeline (four layers)
Responsible disclosure
Public SECURITY.md with scope, SLA and contact (security@petanque.life). Accepted-risks register: 2 entries, both reviewed Q2.
Release quality gates
Legal documents Β· versioned per (type, language)
β Clickwrap Β· live β DocuSign (JWT grant) Β· live β BankID v6 (SE default) Β· live
Audit-data compliance
Retention policy
Audit log retention: indefinite (legal basis GDPR art. 6(1)(f)). No TTL indexes anywhere. Non-compliant tenant policies are flagged automatically.
Per-field PII classification
Every audit field tagged: identity / network / behavioural / contextual. Erasure anonymises PII in place (actor β null, IP β 0.0.0.0) β the record itself is never deleted. Machine-readable schema exposed to the DPO tools.
States
β³ Loading security postureβ¦
β All gates green β no findings need attention.
β Could not reach the pipeline API β showing last known state (14:02 UTC).