Security
Last updated: 15 April 2026
Turnqey controls physical access to homes. We treat that seriously. This page describes the protections in place, the trade-offs we’ve chosen, and how to report a security issue.
Authentication
- Email + password auth provided by Supabase, with bcrypt password hashing.
- Session cookies are HTTP-only and secure; refreshed on every request via a server-side proxy middleware.
- Password reset flows are rate-limited and use time-boxed one-time codes.
Data isolation
- Row-level security on every tenant table — users can only read/write rows they own or are invited to.
- Admin endpoints are gated on a server-checked admin role and a separate service-role key that never ships to the browser.
Smart lock operations
- We don’t store lock manufacturer credentials. All lock operations go through Seam, which holds the sensitive creds in its workspace.
- Every lock/unlock is signed, attributed to a user, and written to an immutable activity log.
- Webhooks from Seam are signature-verified before they’re accepted.
Payments
- All payment details are handled by Stripe. We never see or store card numbers.
- Stripe webhooks are verified with a signing secret before updating subscription state.
Infrastructure
- Hosted on Vercel (app) and Supabase (database). Both providers meet SOC 2 Type II.
- Traffic is encrypted end-to-end. No personal data is logged in application logs.
- We minimise blast radius by using scoped API keys and environment isolation between staging and production.
Responsible disclosure
Found a vulnerability? Email security@turnqey.com.au. We’ll acknowledge within 72 hours and keep you informed until it’s resolved. Please don’t publicly disclose while we’re fixing.