Skip to content

What data we keep

The system is run by the club, hosted on Cloudflare’s free tier. We don’t sell or share data; the only third-party we hand anything to is Cloudflare itself (the hosting provider) and Telegram (when you choose to join a channel).

What’s stored

About your family:

  • Your family display name (e.g. “Smith Family”).
  • Your slug (e.g. smiths).
  • Each parent contact’s name + email + phone.
  • Each athlete’s name + group + (optional) date of birth + (optional) athlete categories.
  • Each parent contact’s alert-email opt-in state.
  • Your family-wide Telegram-immediate-only preference (deprecated; ignored).
  • Each device’s push subscription endpoint, plus a per-subscription encryption key (used to deliver pushes; never displayed).

About your activity:

  • Every RSVP you make (event id, athlete id, status, who picked it).
  • Every quick-message you tap.
  • Every coach-note view (just rate-limit telemetry, no detail).
  • Your last visit timestamp, used for the “what’s changed” banner.

About the device(s):

  • Per device, a persona stored in localStorage (“Mom” / “Dad”).
  • Per device, your family-page offline queue of pending actions.
  • Per device, a cookie (tscal_slug) sticking your slug for /me.
  • Per device, the push subscription if you’ve enabled push (browser-issued endpoint URL).

What’s NOT stored

  • Payment info.
  • Government ID.
  • Social-media handles.
  • Tracking pixels or third-party analytics.
  • Browsing history outside our domain.

Where it lives

  • Cloudflare D1 (SQLite) — most data.
  • Cloudflare KV — small caches and the bot’s webhook secret.
  • Cloudflare R2 — assets (logos and the calendar icon).
  • Your browser’s localStorage — persona, offline queue.

All in the US region by default.

Retention

  • Cancelled / hard-deleted events → row removed, but a tombstone audit entry is kept for ~30 days for the family-page change log.
  • Telegram channel posts mirror → kept for 72 hours, then purged by the daily cleanup task.
  • Magic-link tokens → kept for 15 minutes (single-use, 24h purge for expired).
  • Sessions → kept until expiry or explicit sign-out.

How to remove a family

If your family leaves the club and wants its data removed, ask your coach. They can archive your family in the admin panel (rows soft-removed). A full DELETE on the row is a manual support action; contact Bill via your coach.

Cloudflare’s role

Cloudflare hosts the worker, the database, and the help sites. They have access to the same data we do (it’s on their disks). Their privacy policy applies in addition to ours: cloudflare.com/privacypolicy.

Telegram’s role

If you join the Telegram channel, Telegram gets your phone number (per their account model) and your messages. Telegram’s privacy policy: telegram.org/privacy.

You don’t have to join Telegram to use the family page — the chat panel mirrors the channel for read-only viewing without requiring Telegram.