cornerman.asm$8DB0 · chip.bin

Cornerman

A boxing round timer for your phone that calls out combos while you work. It has a bell, a wood-block warning near the end of each round, and spoken punch numbers. No backend, nothing to sign up for.

run/play/cornerman/
↗ new tab
README.mdcornerman/index.mdx

A mobile-first web app that combines a boxing round timer with a coach who shouts combos at you. You set the number of rounds, the work and rest lengths, a prepare countdown and when the end-of-round warning starts, then press start and leave the phone on the floor.

What it does

  • Round timer. A bell starts each round. A wood-block clack sounds every second in the closing window, a buzzer ends the round, and there’s a flourish when you finish.
  • Pop-shot mode. During work, the phone’s text-to-speech calls a combo at a cadence you choose. Callouts never talk over the end-of-round warning.
  • Combo library. A preset library in beginner, intermediate and advanced tiers, plus a tap-to-build editor for your own. Callouts can be numeric (“one, two”) or named (“jab, cross”).
  • Gym-floor details. Big high-contrast numbers, a screen wake lock so the phone doesn’t sleep mid-round, and home-screen install.

It uses the standard number system: 1 jab, 2 cross, 3 lead hook, 4 rear hook, 5 lead uppercut, 6 rear uppercut, plus modifiers like body, feint, slip and roll. So 1-1 body-2 is spoken as “jab, jab to the body, cross”.

The combo editor with 1, 2, slip, 2, 3 body entered as chips and the spoken preview below them, above a grid of strike buttons
Building a combo by tapping strikes. The line under the chips is what the phone will say.

How it’s built

React, Vite and TypeScript, and nothing on a server. Settings and custom combos live in localStorage.

  • The timer is a pure state machine (idle, prepare, work, rest, finished) with unit tests.
  • The display reads from a wall-clock deadline instead of counting ticks, so it stays accurate when the browser throttles a background tab.
  • Every sound is synthesized with the Web Audio API. There are no audio files. The bell is three decaying sine partials and the clack is a short burst of filtered noise.
  • Audio and speech unlock on the first tap of Start, which is what mobile browsers require.