Back to Projects

PlayVision

Basketball stat tracking and analytics app

Overview

Offline-first iPad app built with EmberJS and Cordova, deployed to the iOS App Store. PlayVision enabled coaching staff to track basketball statistics in real-time during games — shots made/missed, shot locations, plays and audibles being run, turnovers, fouls, and defensive formations. Data stored locally via PouchDB and synced to CouchDB, then compiled into downloadable PDF reports with single-game and season comparisons.

Role

Lead Developer

Timeline

Jan 2016 - Jan 2023

Team Size

Solo

Deployment

iOS App Store

Tech Stack
EmberJS Cordova JavaScript PouchDB CouchDB Bootstrap/Sass jsPDF iOS
Client

PlayVision

Type

Mobile App

Key Features

Real-Time Game Tracking

Track shots, locations, players, plays, audibles, turnovers, and fouls as the game unfolds

Shot Charts

Visual court-mapped shot charts showing makes and misses with scalable canvas rendering

Play & Audible Tracking

Record offensive plays and audible variations with effectiveness metrics per play type

PDF Reports

Generate downloadable PDF reports with stats broken down by player, play, quarter, and game

Season Analytics

Aggregate stats across games with averages, totals, and trend analysis over seasons

Offline-First Sync

PouchDB local storage with CouchDB cloud sync — fully functional without internet

Overview

PlayVision was a basketball statistics tracking application designed for use by coaching staff on iPads during live games. Over seven years of active development and use, it transformed how teams collected and analyzed offensive performance data — helping coaches discover which plays and strategies were most effective.

The Problem

Traditional basketball stat tracking involves:

  • Paper-based recording that’s slow and error-prone
  • Post-game data entry before analysis can begin
  • Limited ability to track shot locations and correlate them with specific plays
  • No easy way to compare performance across games or seasons
  • Gym environments with unreliable internet connectivity

Solution

PlayVision provided an offline-first iPad app optimized for sideline use:

Real-Time Game Tracking

Coaches could quickly tap to record during live gameplay:

  • Shots: Made or missed, including 2-point, 3-point, and putbacks
  • Location: Tap position on a rendered court graphic, with flippable orientation
  • Player: Select from a managed roster with jersey numbers, positions, and years
  • Play: Which offensive play was being run (half-court, baseline, sideline, full-court)
  • Audibles: Track play variations and adjustments called on the fly
  • Defense: Record the opponent’s defensive formation (man-to-man, 2-3, 3-2, zone)
  • Other: Turnovers, fouls, and assists

Playbook & Team Management

  • Create and manage a digital playbook of offensive plays with type classifications
  • Tag plays with custom icons for quick identification (hourglass, eye, star, horn)
  • Manage multiple teams with full roster control
  • Clone plays and rosters between teams
  • Configure game format (halves vs. quarters)

Downloadable PDF Reports

After each game, PlayVision compiled data into downloadable PDF reports (via jsPDF) showing:

  • Individual player shooting percentages (2pt, 3pt, overall)
  • Visual shot charts with court-mapped locations rendered via canvas
  • Play effectiveness analysis with per-play and per-audible breakdowns
  • Stats filterable by quarter/half, game, or full season
  • Comparisons to season averages and totals

Long-Term Analytics

Over seven years of use, the app accumulated data that enabled:

  • All-time performance tracking across seasons
  • Trend identification and regression analysis
  • Data-driven coaching decisions backed by real numbers

Technical Approach

Built with EmberJS (Octane edition) using a pods-based architecture and deployed via Apache Cordova to the iOS App Store. The app ran in landscape orientation on iPads using WKWebView.

  • Offline-First: All data stored locally in IndexedDB via PouchDB, with background sync to a CouchDB backend every 60 seconds when connected. Fully functional without internet — critical for gym environments
  • Speed: Large tap targets and minimal UI for fast-paced game situations. jQuery UI Touch Punch and Hammer.js for gesture support
  • Sync: PouchDB replication with batch sync (100 documents per batch) to per-user CouchDB databases, with real-time sync status monitoring
  • Reports: Canvas-rendered shot charts exported to PDF via canvg and jsPDF, opened with Cordova file plugins
  • CI/CD: Jenkins pipeline for automated iOS builds with TestFlight deployment, build number injection, and keychain-based code signing
  • Styling: Bootstrap 3 with Sass and Liquid Fire for animated route transitions

Results

PlayVision served coaching staffs for seven years, providing actionable insights that helped teams understand their offensive patterns, identify their most effective plays, and make data-driven improvements to their game strategy.