Work/Technical/PointTracer
Full-StackProductSports AnalyticsApr – Jun 2026● Active

PointTracer

A full-stack sports analytics platform that transforms raw GPS and fitness activity data into segmented, interactive replays for point-based and interval sports. Built solo over eight weeks from a single question: can GPS data automatically identify the individual points inside a longer sports activity?

Feature Highlights

Sports-Aware Segmentation

A heuristic algorithm divides a continuous GPS recording into individual points, rallies, and intervals — detecting pauses, restart strength, sustained low-speed periods, and off-field tails. Segments carry explanation tags (auto-detected, pause-based, restart-based) rather than artificial confidence scores.

Synchronized Interactive Replay

A shared playback clock drives map position, current-segment highlighting, pace graph tracer, HR graph tracer, and timeline position simultaneously. Clicking or scrubbing any chart updates the entire interface. Session View covers the full activity; Focus Segment provides per-effort detail.

Multiplayer Timestamp Alignment

Multiple GPX or FIT participants align onto a shared playback timeline with individual time offsets and position interpolation. Players who haven't started or have finished hold their first or last valid position — no invented movement. Per-player names, colors, display modes, and an invite-link join flow.

Recovery & Performance Analytics

HR drop, recovery duration, recovery rate, and recovery classification (passive / active / incomplete) are derived per segment. A bounded Energy % line tracks accumulated load across the session. Performance preservation compares each effort against an early-session baseline to detect real output decline.

Density Heatmaps

An occupancy heatmap renders a continuous spatial density surface from GPS readings — a unified outer footprint with thresholded internal hotspot regions in selected-color shading. A speed-by-area mode shows how movement intensity varies across the field. Heatmaps can be restricted to segmented play only.

Vertical Video Export

A dedicated 9:16 render scene — not a screen recording — produces mobile-ready replays with the selected basemap, trace style, player marker, speed card, elapsed time, segment indicator, and PointTracer branding. Editing controls, analytics, and settings are excluded by design. Supports segment-only export and pre-play streak visualization.

Strava OAuth Integration

Users connect their Strava account through a full OAuth flow — authorization, backend token exchange, token refresh, and local persistence. Imported activity streams can include location, time, distance, heart rate, speed, cadence, movement state, altitude, and temperature, then open directly in the normal review experience.

Segmenter Evaluation Tooling & ML Branch

Seven manually corrected ultimate frisbee fixtures serve as ground truth. A backend evaluator reports count error, average boundary timing error, missed and extra segments, and per-activity score against every fixture. An experimental gradient-boosted ML segmenter with leave-one-out cross-validation runs in parallel with the heuristic baseline.

Development Timeline

April 14Initial session viewer — route map, trackpoint visualization, PointTracer identity
April 16FastAPI backend and heuristic segmenter — pause detection, speed analysis, restart signals
April 17–20Complete GPX upload and normalization pipeline — shared session model established
May 5Interactive playback and timeline editing — shared playback clock, segment add/edit/split/delete
May 6Pace graph, segment editor, and evaluation tooling — corrected fixture workflow
May 8Density heatmaps — occupancy and speed-by-area with unified footprint and hotspot regions
May 9MapTiler satellite, street, and dark basemaps with theme-aware defaults
May 14Segment naming, refined map controls, and HR-chart visibility settings
May 15Vertical 9:16 replay export — dedicated render scene, segment-only mode, streak visualization
May 15Recovery analytics — HR alignment, drop rate, recovery score, Energy %, performance preservation
May 15Non-destructive full-activity editing — crop start/end, rename, restore original
May 15–16Authenticated Strava OAuth import — token exchange, refresh, activity-stream ingestion
May 25Production deployment — Vercel frontend, Railway/Docker backend, production CORS and env config
May 25Public fresh-user experience — clean upload-first state separated from dev library
June 10Experimental ML segmenter — gradient-boosted classifier, fixture evaluation, leave-one-out CV
June 10Timestamp-aligned multiplayer replay — shared clock, position interpolation, per-player display modes
June 10Regulation sport court overlays with real-world proportions and internal markings
June 10Dedicated mobile review interface — three-tab layout, floating playback control
June 10Multiplayer invite-link workflow — join URLs, creator/participant roles, sync feedback
June 10Sport-specific field-zone analytics — court-zone occupancy, tactical spatial analysis
June 10PostHog analytics and opt-in segmentation training-data capture
June 11PostgreSQL persistence and training consent — dual local/production storage modes

Stack

Frontend

React · TypeScript · TanStack Start & Router · Vite · Leaflet · MapTiler · Radix UI

Backend & Infra

Python · FastAPI · Uvicorn · PostgreSQL · Docker · Railway · Vercel

← Back to Technical
Let's connect →