Ninja Soccer privacy

Updated October 2026.

Local scorekeeping

Matches, notes and uploaded logos are stored in your browser on this device. Scoring requires an approved coach account. Clearing browser data removes locally saved matches and live editing keys.

Coach accounts

Every new account must use an owner-preapproved phone number through the team signup page, including accounts invited by email. Existing accounts continue signing in normally. Netlify Identity handles sign-in, email confirmation and account recovery. The app stores approved coach emails for access control. The owner can revoke scorekeeping access. Parents can watch and follow matches without an account.

Private team hub

The team hub requires a verified account and membership approved by the team owner. The app stores member emails, display names and roles; games and practices; player names and attendance responses; announcements; team chat, emoji reactions and per-section read markers; and uploaded files with titles, topics and attachment references. This information is visible to approved team members. Only the owner can invite or remove members and change their roles. Coaches and managers manage team content; parents can send chat messages, remove their own messages, respond for their children, and upload, edit or delete their own game-day photos and videos. Coaches and managers can moderate all game-day uploads.

Invitation links are tied to an email, expire after seven days and can be used once. A verified account using that invited email can also complete an active invitation when confirmation opens another browser. Expired and revoked invitations remain blocked. Share them directly with the intended person. Members can download private team files, so members should share only appropriate team information. Team documents support PDF, PNG, JPEG and WebP up to 10 MB each. Game-day albums also support MP4, MOV and WebM videos up to 50 MB each. Documents and media share a 1 GB team limit. Photos may be resized and converted to JPEG on your device. Videos retain their original format. Temporary upload parts expire after 20 minutes and are removed when the next upload starts. Private links and attachments require current team membership. Image and PDF previews are rendered on your device inside the app, with private file bytes and rendered pages excluded from the offline cache. PDF.js assets are served by this site; file content is not sent to an external preview service. Team records stay until removed by an authorized member; no automatic seasonal deletion is applied. Removed members lose server access, but copies they already downloaded cannot be recalled. Contact the team owner about deleting team records.

Private API responses and uploaded files are never saved in the app’s offline cache. Team content requires an internet connection and is cleared from the page on sign-out. The device remembers a player name entered for attendance, unread-chat position, and invitation tokens temporarily while joining. Clear browser data to remove device preferences.

Team profiles and roster

Member profiles show a name and shared phone number to signed-in team members. A contact email, About me and profile photo are optional. The login email remains necessary for sign-in and is not automatically shown as a contact email on the profile. Users edit their own profiles; initials appear when no photo is provided. Owner and coaches maintain roster details and assign one or more joined members to a player. Assigned parents may update only that player’s short bio and optional photo. Assignments do not grant coaching or account permissions. Roster entries can be linked to existing staff member profiles. Member profile photos can be cropped and repositioned on the device. Only the selected crop is uploaded after Save profile; cancelling discards pending photo changes. Profile photos are resized on the device, stored privately with other team media, and share the same 1 GB quota. Removing or replacing a profile photo frees its stored bytes. Photos and profiles require active team membership; no public directory is provided.

Game-day photos and videos support emoji reactions. Sharing a photo link in chat references the existing private upload; it does not create a public link or duplicate the upload. Replies quote existing messages; when the original is deleted, its quoted text is no longer returned. Gallery minimize preferences are remembered on this device for the signed-in user.

Optional team alerts

Team announcements, schedule changes and chat alerts are selected by default on new devices. Your device still requires notification permission from your explicit tap before alerts start. Existing saved opt-outs are preserved, and you can turn team or chat alerts off in More. The app restores this device’s saved choices after reopening. Closing the app does not turn alerts off. Snooze for 24 hours pauses team/chat pushes on this device until the server-stored expiry time; it resumes automatically, without replaying missed alerts. A local cache stores your last saved choices to show them if the connection is unavailable; server confirmation determines the active status. Send test alert queues a generic notice only to the current device. Alert preferences and snooze times are stored with your account email and this device’s push subscription. Per-section read markers keep unread badges consistent for your account. Supported devices can display a combined unread count on the app icon; OS permission and notification settings still apply. Alert text contains a generic notice rather than message text or field details. Turn alerts off in More, sign out, or remove notification permission in device settings. Revoking membership removes team subscriptions. Notification delivery depends on device permission, network access and platform behavior and is not guaranteed.

Phone-approved signup

The owner stores approved phone numbers and optional expected names. Parents submit their name, email and phone; only the owner can see these approval and review details. The phone is matched without an SMS ownership check. Email confirmation is required, and one account can claim each approved number. Pending requests expire after seven days. No contact list is accessed or invitation text sent automatically.

Optional live sharing

Starting live sharing uploads the teams, date, colors, opponent logo, score, clock and goal timeline to this website’s Netlify-hosted database. Scorer names are shared only if the scorekeeper enables that option. Match notes are never included. Anyone with the viewing link can read the shared match. The separate editing key stays on the scorekeeper’s device and is sent only to authenticate changes.

Live links expire after seven days. Expired links stop serving match data, and expired records and associated notification subscriptions are removed by the daily cleanup task. Stopping live sharing immediately closes the viewing link and removes its notification subscriptions. A viewer cannot edit a match.

Optional notifications

Following a match stores a browser notification endpoint and encryption keys with that match so this site can send goals, score corrections, half-time and final-score alerts. No email address, phone number or contact list is requested. Push messages pass through the device’s push provider, such as Apple, Google or Mozilla. Use Stop goal notifications to remove this device’s subscription for the match, or change notification permission in device settings.

Hosting and messages

Netlify processes hosting requests, which can include IP addresses and technical request information. This app does not add advertising or analytics. Share buttons open your device’s share sheet or copy text; they do not send messages automatically. Notification delivery depends on connectivity and device settings.

Return to team hub