GROLF

Swing your phone. Play Pebble Beach.

Play itgrolf.hobel.dev

GROLF in play

Three holes at Pebble Beach Golf Links — the 7th, the 8th and the 18th — played in order, all the way to the cup. You see your lie, grip the phone with the top edge pointing down and the screen facing away, hold a thumb on the glass, and swing.

The touch is a dead-man's switch. It marks your address precisely, gives the analyser an exact timestamp to anchor its gyro-bias estimate against, tells the app the instant the phone leaves your hand, and encourages the tighter grip you want anyway. Let go without swinging and the shot is simply cancelled.

On a laptop, or if you decline motion access, it falls back to tap-to-swing — a power meter then an accuracy meter. Everything downstream is identical, so the whole hole is playable without a phone.

Worth knowing

Four things get measured, and mishits are real

Clubhead speed comes from mean angular velocity across the downswing; shot shape from rotation about the phone's long axis at impact; tempo from the ratio of backswing to downswing, where 3:1 is ideal. A jerky, rushed or decelerating swing produces a genuinely bad golf shot, because that is what golf is.

Calibration is a first-class feature, not a settings toggle

Everyone swings differently and the sensor has no ground truth, so three comfortable swings become your 100%. All tuning happens on the phone — deliberately, because the only way to test motion input is on a device that requires HTTPS, and tuning by editing source and redeploying would be intolerable.

The physics is verified without a browser

The ball-flight model is checked against real launch-monitor numbers, and the swing analyser against synthetic 60 Hz swing traces, both headless. A separate check injects synthetic DeviceMotion plus real touch events to prove the press → swing → release path works end to end, including the dead-man's switch and multi-touch release — the primary input, which the ordinary smoke test never touches.

Screens

Built with

Three.jsViteDeviceMotion / DeviceOrientationCanvasStatic bundle behind Caddy

Play GROLF