FarmFlow
Living document. This page describes the security practices in place today. It is updated as the product evolves. Last reviewed June 2026.

Security

Your farm records — cow health, employee pay, financial transactions — are some of your most sensitive business data. Here's exactly how we protect it.

Contents

  1. At a glance
  2. Encryption
  3. Account & authentication security
  4. Multi-tenant isolation
  5. Backups & recovery
  6. Audit logging
  7. Browser security headers
  8. Rate limiting & abuse protection
  9. Hosting & infrastructure
  10. Reporting vulnerabilities
  11. Incident response
  12. Security roadmap

1. At a glance

🔒 TLS everywhere
HSTS submitted to Chrome's preload list. Plain-HTTP refused.
🔑 scrypt passwords
Industry-standard slow hash; no plain text stored.
🛡 Multi-tenant scoping
Every query filtered by your farm; no cross-tenant leaks.
💾 Daily backups
30 days of recoverable snapshots per farm.
📋 Comprehensive audit log
21+ distinct event types captured for forensic review.
🚦 Rate limiting
Login, password reset, signup — all throttled per-IP.

2. Encryption

In transit

All traffic between your browser and FarmFlow is encrypted with TLS 1.2 or newer using certificates issued by Let's Encrypt. We send the Strict-Transport-Security response header with a two-year max-age and includeSubDomains; preload, and we have submitted the farmflow.co.nz domain to the Chrome HSTS preload list so browsers refuse plain-HTTP connections to any FarmFlow subdomain.

At rest

Data is stored in PostgreSQL on Railway's managed infrastructure. Railway encrypts disk storage at the platform level. Backups inherit that encryption. We are evaluating an additional application-level encryption layer for the most sensitive fields.

3. Account & authentication security

4. Multi-tenant isolation

FarmFlow is a multi-tenant system — many farms share the same underlying database. We isolate them with a defence-in-depth approach:

5. Backups & recovery

Per-farm daily backups

Every day at 02:00 NZ time, FarmFlow snapshots every active farm's data into a separate backup table inside the same database. We retain up to 30 snapshots per farm; the oldest are automatically pruned.

One-click restore + safety snapshot

Owners and super-administrators can restore from any stored snapshot through the Settings UI. Before any restore actually changes data, the current state of the target farm is automatically saved as a pre-restore snapshot so the operation is reversible.

Manual export

You can download a complete JSON backup of your farm at any time from Settings → Backup. The download includes every farm-scoped record, including the four cow and employee child tables that some early-stage backup tools skip.

Database-platform backups

Railway's managed PostgreSQL takes its own automated backups at the platform level, providing an additional recovery option independent of the application-level backups above.

6. Audit logging

FarmFlow keeps a detailed audit log of significant administrative actions. The log captures more than 21 distinct event types, including:

Login events are stored separately with IP, approximate location, and user-agent string, and are used to detect logins from new countries.

7. Browser security headers

Every HTTP response sent by both farmflow.co.nz and app.farmflow.co.nz includes the following headers, configured in defence-in-depth:

HeaderWhat it does
Strict-Transport-Security Forces HTTPS for two years; preload-eligible.
X-Frame-Options: DENY Prevents the site from being framed (clickjacking defence).
X-Content-Type-Options: nosniff Blocks MIME-type sniffing attacks.
Referrer-Policy Limits how much URL information is leaked when navigating to external sites.
Permissions-Policy Disables sensors and APIs the application does not use (camera, microphone, payment).
Content-Security-Policy Restricts which scripts, styles, images, and forms the browser may load — defence against XSS and form-hijack.

8. Rate limiting & abuse protection

The following endpoints are rate-limited per source IP using a database-backed bucket store that survives application restarts and works across replicas:

EndpointLimit
Login30 per minute
Password reset request5 per hour
Email verification re-send5 per hour
Trial signup3 per hour
Landing-page signup10 per hour
Public review submission3 per hour

File-upload endpoints (CSV imports, backup uploads) each cap individual uploads to a size appropriate for the format (5 MB for CSVs, 10 MB for Excel imports, 25 MB for backup JSON files).

The system refuses to start in production with the default cryptographic signing key, preventing accidental key reuse across environments.

9. Hosting & infrastructure

FarmFlow runs on these providers. Each has been chosen for security posture as well as cost and reliability:

LayerProviderCompliance posture
Application + databaseRailway SOC 2 Type II underway; disk encryption at platform level.
Marketing siteNetlify SOC 2 Type II certified; serves only static assets, no personal data.
Transactional emailResend SOC 2 Type II in progress; handles email delivery only.
Scheduled jobscron-job.org GDPR compliant (EU operator); sees only an authentication header, not your data.
DNSAWS Route 53 SOC 2, ISO 27001, and many more.

All passwords and secrets used by the application are stored in Railway's encrypted environment variable store, never committed to source code.

10. Reporting vulnerabilities

We take all security reports seriously. If you believe you have found a vulnerability in FarmFlow, please email us at security@farmflow.co.nz with the subject line "Security vulnerability report".

Please include:

We commit to:

Please do not publicly disclose the issue until we have had a reasonable opportunity to fix it.

11. Incident response

In the unlikely event of a security incident affecting your data:

12. Security roadmap

Active or near-term improvements (listed publicly so you can hold us accountable):

Last reviewed: 8 June 2026

Next scheduled review: 8 December 2026

See also: Privacy Policy · Terms of Use