How we protect your club.
A volunteer treasurer should not have to become a security engineer. Here is exactly what we do — in plain English — so you can answer the board's questions in one minute.
PCI-DSS SAQ-A via Stripe
Card data never touches our servers. Payment fields are hosted by Stripe inside their iframe; we receive only tokens. That keeps us in scope for SAQ-A — the lightest PCI questionnaire — and keeps your club out of card-handling liability entirely.
No card data on our servers
We do not store card numbers, CVVs, or magstripe data anywhere. Stripe holds the vaulted payment method. We hold a customer id and a payment-method id. That's it.
AWS S3 with SSE-KMS
Player photos, roster documents, and uploaded attachments live in AWS S3 with server-side encryption using AWS KMS-managed keys. Object ACLs are private; access is gated through signed URLs that expire in minutes, not days.
Neon Postgres, row-level tenancy
Every row in our database carries a club_id, and every server query filters by it at the data layer — not just in application code. A bug in app code cannot leak rows across clubs because the database itself enforces the boundary.
HTTPS-only, HSTS, modern TLS
All traffic is HTTPS with HSTS preload. We force TLS 1.2+ and prefer 1.3. Static assets ship over a CDN with the same posture. No mixed content, no http:// fallback, no exceptions.
Secret rotation policy
AUTH_SECRET, Stripe webhook secrets, and database credentials are rotated on a fixed cadence and immediately on any suspected exposure. Sessions are signed and expire; revocation is instant from the admin console.
Least-privilege admin access
Engineers do not have ambient access to production data. Database access requires a per-request approval and is logged. Customer-support tooling shows only what is necessary to answer a specific ticket and redacts the rest.
COPPA-aware children's data
Under-13 profiles are managed by a verified parent or guardian. We collect only what is required to run the club — name, date of birth for age-group placement, photo, emergency contact — and never market to or profile children.
Have a security question we didn't cover?
We respond to security inquiries within one business day.
Contact us