Platform (own product)Platform

HoopTrace

The stat engine for grassroots basketball

Platforms
iOS · Android · Web
Stat capture
Offline-first
Box score
Live, no app
Stat sheet
PDF at the buzzer
TimelineOngoing
TierPlatform
TypeScriptSwiftKotlinGoFirebaseOffline-first sync

The Challenge

Grassroots basketball still keeps stats on paper and in spreadsheets. Gyms have dead cell signal, so anything cloud-dependent fails at exactly the moment it is needed. Coaches wait days for numbers that are stale by the time they arrive, and any system handling youth athletes has to be careful with the personal data of minors.

Our Approach

We built for the gym, not the demo. One operator captures on one tablet, and the app keeps working through a dead signal — capture is local first and syncs when it can. Viewers need no app install: the live box score is a URL. Privacy is a design constraint rather than a policy page, so the system stores jersey number and name only, with no photos, PII or location.

What We Built

A tablet capture app backed by a Go service and native iOS and Android clients, an ESPN-style live box score that any parent can open in a browser, and a branded PDF stat sheet generated the moment the buzzer sounds. Deliberately scoped to the stat workflow alone — no brackets, no scheduling, no ticketing.

Offline-first capture that survives a dead gym signal

ESPN-style live box score viewable in any browser

Branded PDF stat sheet generated at the final buzzer

Minor-safe by design — jersey and name only, no PII

Native iOS and Android clients alongside the web app

Export or delete your data at any time

The Product

HoopTrace screenshot

By The Numbers

iOS · Android · Web

Platforms

Offline-first

Stat capture

Live, no app

Box score

PDF at the buzzer

Stat sheet

Tech Stack

Frontend

TypeScriptReact

Mobile

Swift (iOS)Kotlin (Android)

Backend

GoFirebase

Infrastructure

Firebase HostingOffline-first sync

Want to build something like this?

Let's talk about your project — free 30-minute consultation, no strings attached.