Legal & Security

Data Handling Policy

Effective July 20, 2026

Chapters trust Adonify with their rosters, participation records, and dues bookkeeping. This page describes — concretely — how that data is stored, isolated, protected, and retained. It complements the Privacy Policy, which covers what we collect and why.

Where your data lives

ProviderRoleData
SupabaseDatabase (Postgres), authentication, file storageAccounts, organizations, participation records, dues records, uploaded files (proof photos, avatars)
VercelApplication hosting and deliveryRequest logs and application traffic

Both providers encrypt data in transit (TLS) and at rest. We keep the subprocessor list intentionally short; if it changes, this page is updated.

How data is isolated

  • Row-level security on every table.Every database table carries explicit, default-deny row-level security policies. Your organization’s rows are invisible to anyone outside it — enforced by the database itself, not just application code.
  • Server-side authorization on every request.Each action re-verifies your session, your membership in the organization you’re acting on, and your role. Admin-only features (finances, member management, approvals, reports) check the admin role on the server for every request — hiding a button is never the security boundary.
  • Visibility follows your org’s settings. Controls like leaderboard visibility, history visibility, and at-risk visibility are enforced server-side, so data an admin has restricted is filtered before it ever leaves the database.
  • Private file storage. Uploaded photos live in private buckets and are served through short-lived signed URLs, not public links.

How accounts are protected

  • Passwords are stored only as secure hashes by Supabase Auth; we never see or store plain-text passwords.
  • Sessions are HTTP-only, secure cookies — never tokens in localStorage — which keeps them out of reach of page scripts.
  • Signup, login, password reset, and invite-code endpoints are rate-limited per IP and per identifier to blunt brute-force and enumeration attempts, with throttles enforced at the database trust boundary.
  • Email confirmation is required before an account can use the app; password resets invalidate old sessions, and you can sign out all other devices at any time from Account → Security.

Integrity of records

  • The points ledger is append-only: entries carry who created them and when, adjustments require a reason, and nothing is silently edited or deleted.
  • Approvals are transactional and idempotent — a double-click can’t double-post points.
  • Dues records are bookkeeping only. Adonify never collects or stores payment card numbers, bank accounts, or processes money.

Retention and deletion

  • Account and organization data persist while accounts are active.
  • When a member is removed from an organization, their access ends immediately; historical ledger rows are retained so the organization’s totals and reports stay truthful.
  • You can delete your account yourself from Account → Security. Deletion permanently removes your credentials and personal profile; organization records you contributed to are retained in anonymized form (attributed to “Former Member”), as described in the Privacy Policy.
  • Database backups are managed by Supabase on an automated schedule.

Incident response

If we become aware of a security incident affecting your data, we’ll investigate, contain it, and notify affected users and organizations as required by law. Security reports are very welcome: email adonifycto@gmail.comwith “SECURITY” in the subject line and we’ll respond promptly. Please don’t test against other organizations’ data — ask us and we’ll set you up with a safe environment.