OpenHoops Privacy Policy

Effective date: July 28, 2026 · Contact: support@tim-builds.dev

OpenHoops ("the app") helps basketball players find gyms and outdoor courts and see who is playing right now. This policy explains what information the app handles and why. The short version: we collect the minimum needed to run the app, we don't sell anything, your location is never read in the background, and the parts of the app that show you to other players are described plainly below.

Using OpenHoops also means agreeing to our Terms of Service. You must be at least 13 years old to have an account.

What other players can see about you

This is the part worth reading twice, because it is the point of the app.

They can seeDetail
Your username and profile pictureAlways, to any signed-in player.
That you are checked in at a court, right nowOnly while the check-in is active (3 hours at most, or until you leave).
Roughly how long ago you arrivedRounded down to 15-minute steps ("just now", "~30 min ago"). Your exact arrival time is shown only to you.
Your "heading there" planVenue and estimated arrival, with your username, until that time passes.
Your respect count and streakTotals only — never who gave you daps, or where.
Your real nameOnly if you turn it on. Hidden by default; never more than a first name plus last initial.

Other players cannot see your email address, your check-in history, which courts you visit most, your favourite courts, your plans after they expire, your settings, or who you have blocked. Since July 2026 those limits are enforced by the database itself, not only by what the app chooses to display — so they hold even against someone querying our servers directly rather than using the app.

What we collect

Account information. When you sign up we collect your email address and a username you choose. If you sign in with Google, we receive your email address and the name on your Google account (which pre-fills the optional name fields — you can clear them). Your email is used for signing in and account recovery. Other players never see it.

Optional profile details. You may add your first and last name and a profile picture. These are entirely optional and leaving them blank changes nothing about how the app works. Your name is hidden by default: other players see it only if you choose a display option in settings (initials, first name only, or first name plus last initial; your full last name is never displayed to anyone).

Your profile picture is publicly accessible. It is stored with our infrastructure provider at a web address that anyone holding the link can open, without signing in — this is how photos load quickly on court rosters. Please don't upload anything you would mind being seen outside the app. The file is deleted when you delete your account.

Location (while using the app). The app uses your device's precise location for two purposes only: showing venues near you on the map, and checking that you are close enough to a venue to check in (about 50 metres for an outdoor court, 200 metres for a gym — gyms use a wider ring because GPS is less accurate inside large buildings). Location is read only while the app is open, never in the background, When you check in, your position is sent to our server once, solely to confirm you are inside the venue's check-in ring, and is immediately discarded — it is never stored. What we keep is only the venue you checked in at.

Automatic check-in is on by default: when the open app sees you at a venue it files a brief pending arrival, which becomes a check-in about a minute later unless you leave first. A check-in shows your username to other players at that court. You can turn automatic check-in off at any time in Settings → Presence, and check in by hand instead.

Check-ins and your activity history. When you check in we store which venue and when. That record is kept as your own activity history — the Activity tab and the "gyms you frequent" list on your profile are built from it — until you delete your account. To be precise about a phrase we used to get wrong: a check-in stops being shown to other players after 3 hours, but the record of it remains in your own history. Only you can read your history.

Daps. When you give another player a dap, it is stored and shown to the recipient anonymously — the app never reveals who gave it, and the venue history behind daps is visible only to the person who received them.

"Heading there" plans. If you announce you're heading to a court at a certain time, we store that plan (venue and estimated arrival) and show it, with your username, to players looking at that court. Once the time passes the plan stops being shown to anyone, and you can cancel it at any time; the underlying record is kept with your account data until you delete your account.

Favourite courts. Courts you star are stored so the app can alert you when players show up there. Your favourites list is visible only to you.

Notification token. If you allow notifications in the store version of the app, your device's push-notification token (a random address for delivering notifications — not your phone number or any hardware ID) is stored so alerts about your favourite courts can reach your device with the app closed. It is removed when you sign out and when your account is deleted.

Reports and blocks. If you report a player, we store the report (who you reported, the category — including a child-safety option — and where) so we can review it; reports are never shown to the reported player. If you block a player, that is stored, and the two of you are hidden from each other's rosters, player cards and plans.

Crash reports. Since July 28, 2026 the app includes crash reporting (Sentry) so we can find bugs that only happen on real devices — it arrived through an app update, so store versions installed earlier have it too. When the app crashes or hits an error, it sends diagnostic information: device model, operating system version, app version, which app update was running, and the technical stack of the failure. It does not include your location, your messages, or anything you typed, and it is not used for advertising or to profile you.

What we don't collect

No contacts, no files, no payment information, no health data, no advertising identifiers, and no background location. We don't read your photo library — when you set a profile picture, your phone's own picker hands us just the one image you chose. The app contains no advertising SDK and no analytics or tracking SDK.

Where your data lives, and who else touches it

App data is stored with Supabase (our database and authentication provider), hosted in the United States (AWS us-east-2). All data travels over encrypted connections (HTTPS). Database access rules restrict every player — including anyone querying our servers directly — to the information described in the first section.

We do not sell, rent, or trade your personal information. A small number of service providers necessarily handle some data to make the app work:

Data retention and deletion

Your account data is kept until you delete your account. You can delete it three ways:

  1. In the app: Profile → gear icon → Advanced → Delete account. This immediately and permanently removes your profile, check-in history, daps, plans, favourites, reports, blocks, notification token, and profile picture.
  2. On the web: see our account-deletion page — no app required.
  3. By email: write to support@tim-builds.dev from the address you signed up with, and we will complete the deletion within 30 days.

Children

You must be at least 13 years old to use OpenHoops. The app is not directed at children under 13, and we do not knowingly collect personal information from them. If you believe a child under 13 has an account, email us and we will remove it. If you are under 18, please use the app only with a parent's or guardian's permission — and read the safety section of our Terms of Service together.

Changes

If this policy changes in a meaningful way, we will update this page and the effective date above. Continued use of the app after a change means the new policy applies.