🎱

the-practice-log

AI-powered billiards practice tracker

A React/TypeScript app for logging billiards practice sessions with shot-level detail, trend visualization across sessions, and Claude API coaching feedback.

View on GitHub
16 unit + 21 E2E·Vitest + Playwright

The Problem

Billiards practice without tracking is just hitting balls. Knowing which contact points you miss, at which power levels, across which drills — that's how you improve.

The Solution

A practice logger that captures drill type, individual shots (contact point, power, result), and session notes. Recharts visualizes trends over time. The Claude API analyzes your session data and provides coaching feedback specific to your patterns.

Screenshots

Session logger with shots

Logging a Straight-ins session with 6 shots tracked by contact point, power, and result

Practice trends chart

Made/missed trend line showing improvement across sessions for a drill type

AI Coach Debrief

Claude analyzes shot patterns and provides specific coaching feedback based on your data

Tech Stack

React 19

Component architecture for a multi-panel UI

TypeScript

Type safety across session and shot data models

Vite

Fast dev server and build tool

Tailwind CSS

Utility-first styling matching billiards color palette

Recharts

Line charts for made/missed trends by drill type

Claude API

AI coaching debrief based on actual shot data

Key Engineering Decisions

localStorage persistence — no backend needed for a practice log

Shot logger uses accordion pattern — collapses after save to keep UI compact

Shots not required to save a session — Ghost ball practice doesn't lend itself to shot logging

AI prompt instructs Claude to return plain text, not markdown — simpler rendering

Drill types domain-accurate: Straight-ins, Cut Shots, Cue Ball Control, Breaking, Safety, Kick, Bank, Ghost

Related Project

cue-qa