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
| Provider | Role | Data |
|---|---|---|
| Supabase | Database (Postgres), authentication, file storage | Accounts, organizations, participation records, dues records, uploaded files (proof photos, avatars) |
| Vercel | Application hosting and delivery | Request 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.