Security & Trust

Controls, stated as they actually are.

What is in place today, what we inherit from our providers, and what is not yet in place. Nothing here implies a certification we do not hold.

Where your data is stored and processed

SiteActa is built and operated by a Swiss company. Project content at rest (the database, user accounts and every uploaded file) is stored with Supabase on AWS in eu-central-1 (Frankfurt, Germany), and AI processing of that content is pinned in code to Google Vertex AI in europe-west4 (Netherlands). Two parts of the service are not EU-restricted: the application runtime and TLS termination run on Cloudflare's global edge, where the nearest point of presence serves the request, and inbound email is received through SendGrid, whose processing region is not restricted to the EU. Outbound notification email is sent through Resend via the Lovable connector gateway, and the timestamping authority receives only a SHA-256 hash, never your content. The full provider list is published in the subprocessor register below.

Identity and access

Sign-in is email and password or Google. Email verification is required and anonymous accounts are disabled. Access to a project is by invitation only, granted by a project administrator. Roles are held in dedicated tables read by database functions, never on a user or profile record, and an external viewer sees only the topics explicitly granted to them. Multi-factor authentication is not yet enabled for user accounts, and SAML single sign-on is not yet offered.

Encryption in transit and at rest

HTTPS is enforced on every response, with HSTS set for one year including subdomains; the domain is not on the browser preload list. Database, storage and AI calls all run over TLS. Encryption at rest for the database and object storage is provided by the underlying platform, Supabase on AWS, and is inherited from that provider rather than independently verified by us. There is no application-level field or column encryption: content is stored in plaintext columns, and hashing protects its integrity, not its confidentiality.

Infrastructure

Postgres database, authentication and object storage run on Supabase on AWS in eu-central-1. Application runtime and TLS termination run on Cloudflare. AI inference and embeddings run on Google Vertex AI, pinned in code to europe-west4. Inbound project email is received through SendGrid and outbound notification email is sent through Resend. There is one private storage bucket, with a per-object size ceiling and a file-type allowlist, and every object access is decided per path by a database function.

Application security

Access control is enforced in the database by row-level security: every table in the application schema has it enabled, with policies that never use an unconditional rule, so a stolen client key alone grants nothing. A small, enumerated set of HTTP endpoints is reachable without a session: the inbound-email webhook, which verifies an ECDSA signature from the mail provider, the scheduled maintenance hooks, which require a shared secret, the Content-Security-Policy violation report endpoint, and the service discovery routes. Inbound mail is rate limited before it is parsed or stored. A Content-Security-Policy is currently served in report-only mode: violations are recorded but nothing is blocked, while the policy is calibrated against real traffic before it is enforced. Until enforcement, cross-site-scripting mitigation rests on server-side sanitisation and framework escaping.

Audit logging

Security-relevant actions are written to append-only tables whose immutability is enforced by database triggers rather than by application code: platform-role changes, ingest-token rotation, share-link and invitation access attempts with IP address and outcome, per-phase inbound email processing, provenance downgrades and project-record sign-off revocations. Sign-in, sign-out and failed authentication events are held by the authentication platform and are not yet mirrored into an application-readable audit table.

Resilience and backups

Backups are provided by the underlying database platform. We have not independently verified whether point-in-time recovery is enabled, nor the backup frequency or the retention period. Retention is set by that platform and is not configurable by us, which also means that deleted data persists in backups until it ages out. We have not defined a recovery time or recovery point objective, and no restore exercise has been carried out and documented.

Incident response

SiteActa is operated by a single-operator company: there is no on-call rotation and no documented incident-response runbook. A security contact is published at /.well-known/security.txt and reports are acknowledged directly by the founder. Customers affected by an incident would be notified by email.

Privacy, FADP and GDPR

DSWaldron GmbH is a Swiss company subject to the revised Swiss FADP and, for customers in the EU, acts as processor for project content under the GDPR. Project content at rest is stored in the EU and AI processing of that content is pinned to the EU; edge delivery and email transport use providers with global infrastructure, each named in the register below. Customer content is not sold and is not used to train AI models. A data-processing agreement is not yet published as a standard document; we will enter one on request.

Independent assurance

None has been obtained yet. There is no SOC 2 report, no ISO 27001 certification, no third-party penetration test and no independent audit of the access-control policy set. Assurance today is internal: a documented security posture assessment derived from the running system, dependency vulnerability checks run manually and on demand rather than as a configured automated process, database policy linting and an automated test suite focused on security-sensitive paths. We would rather state that plainly than imply a certification we do not hold.

A detailed security document, derived from the running system, is available on request under NDA.

Evidence integrity (hashing, independent timestamping, versioning and completeness reporting) is documented separately: Evidence integrity

Subprocessor register

Last updated: 18 August 2026

Every third-party provider that touches customer data when you use SiteActa. Providers referenced in code but not in use (including payment processing) are not listed, because they process nothing today. Rows marked browser-side are requested by the visitor's own browser, which exposes the visitor's IP address to that provider.

ProviderService providedData it touchesProcessing locationRestriction
Supabase (AWS)Database, authentication, object storageAll project content at rest: records, documents, photographs, emails, account dataeu-central-1 (Frankfurt, DE)EU-restricted
Google Vertex AIAI inference and text embeddingsProject text and document content submitted for analysiseurope-west4 (NL), pinned in codeEU-restricted
CloudflareApplication runtime, edge delivery, TLS terminationRequests and responses in transit, including content being viewed or uploadedGlobal edge, nearest point of presenceGlobal
SendGrid (Twilio)Inbound email received at project addressesFull inbound emails and their attachmentsNot restricted to the EUGlobal
ResendOutbound transactional email (invitations, notifications, resets)Recipient address, name, and notification contentSent via the Lovable connector gatewayGlobal
LovablePlatform management, deployment, connector gatewayApplication configuration and deployment; outbound mail brokeringGlobalGlobal
DigiCertRFC 3161 trusted timestampingA SHA-256 hash only, never document or record contentGlobal TSA endpointGlobal
Cloudflare DNS-over-HTTPSDKIM public-key lookup during inbound email verificationA DNS query for a public selector record derived from an inbound messageGlobal resolver endpointGlobal, server-side
Google FontsWeb typography, served to the visitor's browserVisitor IP addressGlobalGlobal, browser-side (visitor IP)
Google OAuthOptional sign-in with a Google accountAuthentication exchange initiated by the userGlobalGlobal, browser-side (visitor IP)
Open-MeteoWeather and geocoding for site diary recordsProject location coordinatesEUEU, server-side
RainViewerWeather radar map tilesMap tile requests, visitor IP addressGlobalGlobal, browser-side (visitor IP)
OpenStreetMapBase map tilesMap tile requests, visitor IP addressGlobalGlobal, browser-side (visitor IP)
unpkgMap marker assets delivered to the browserVisitor IP addressGlobalGlobal, browser-side (visitor IP)

Customers will be notified before a new subprocessor is engaged or an existing one changes materially.