Travis Frye
All projects
Personal Project · Mobile App

Hoops Index

A youth basketball practice, planned in the gym and run from a phone. Built for the sideline, not the desk.

Role
Product owner, user, and builder
Timeline
v1 March 2026 · v2 November 2026
Built with
Claude Code · React · TypeScript · Vite · PWA · GitHub Pages
Status
Live and free; I use it at my own practices
original drills across 10 focus areas
116original drills across 10 focus areas
length, roster, age, and focus build a full practice
4 inputslength, roster, age, and focus build a full practice
accounts or signal needed; it installs and works offline
0accounts or signal needed; it installs and works offline

Problem

Good drills are scattered across YouTube, coaching sites, and old notebooks. Finding the right ones for today's age group and headcount, with minutes to spare, doesn't happen in a gym parking lot.

Solution

One phone app: a filterable drill library, a builder that turns four choices into a full practice, and a timer that runs the plan drill by drill with coaching cues on screen.

Impact

I walk in with a plan in a couple of taps, adjust it to whoever shows up, and run practice from the phone in my hand instead of a notebook.

How it works

  1. 1

    Set the practice

    Length, number of players, age group, skill level, and up to 3 focus areas

  2. 2

    Get a plan

    Warm-up, skill blocks, water breaks, and a competitive finisher

  3. 3

    Adjust

    Reorder, retime, swap, or shuffle drills for who actually showed up

  4. 4

    Run it

    A sideline timer with cues, whistle beeps, and the screen kept awake

The app

Four phone screens from Hoops Index: the Drills screen with focus areas as hanging banners, the Build a Practice sheet, a one-hour Handles + Shooting plan, and Practice Mode with the timer running.
Browse drills, build a practice, adjust the plan, and run it with the sideline timer.

What changed from v1 to v2

  • A list of drills to search

    A practice plan to run: the plan is the product, the drills feed it

  • An AI drill generator in the browser

    A rules-based plan builder that works offline; AI parked until it can run safely on a server

  • A web page you look things up on

    An app on the home screen that works with no signal in the gym

  • 47 drills, some adapted from coaching sites

    116 drills, every write-up original

How I worked

Build for the real moment

The user is a coach with minutes to spare and a phone in one hand. Big tap targets, one-handed navigation, and a timer that keeps the screen awake came from that, not from a feature list.

Right tool, not the newest one

A practice plan follows rules a coach already knows: warm up, rotate skills, water breaks, finish competitive. Plain code does that instantly and offline. AI comes back when it has a safe home on a server.

Make it easy to keep growing

New drills go in through a validation script that checks every field and skips duplicates, so the library can grow without breaking the app.

Skills on display

  • Problem framing
  • Scope decisions
  • Mobile-first design
  • AI-assisted development
  • React & TypeScript
  • Offline web apps (PWA)

The full story

The details behind the summary. Open any section.

The problem

Coaching youth basketball while working full time is a scheduling puzzle that never fully resolves. I often have 15 minutes before practice, sometimes less, to fill an hour or more with drills that fit the age group, can be taught in the time I have, and work whether 8 kids show up or 12.

The drills exist. They're scattered across YouTube videos, coaching websites, old notebooks, and things half-remembered from a clinic years ago. What was missing was a way to find the right ones fast and turn them into a plan.

Problem statement

A volunteer coach needs a complete, age-appropriate practice plan in minutes, on a phone, often with no signal, and has to adjust it once they see who showed up.
v1: a searchable drill list

The first version (March 2026) was a single web page: 47 drills I could filter by focus, age group, skill level, and player count, plus favorites and an AI button that asked Claude to write a new drill.

That solved the wrong half of the problem. Finding a drill got faster, but I still had to assemble the practice myself, keep time, and remember what came next. The AI drill generator was fun, but more drills wasn't my problem. And because it called the AI service straight from the browser, it couldn't be shared publicly without exposing a private key.

v2: a practice in your pocket

In November 2026 I rebuilt it as an installable phone app, directing Claude Code through a series of small, focused changes and reviewing each one before it shipped.

  • Practice builder

    Pick a length (30 to 120 minutes), players, age group, skill level, and up to three focus areas. It returns a full plan: a warm-up, skill blocks that rotate through the focus areas, water breaks about every 25 minutes, and a competitive team drill to finish.

  • Adjust for who showed up

    Reorder, retime, add, remove, or shuffle drills. Each block shows its clock time so I know where practice should be.

  • Practice Mode

    A sideline timer that runs the plan drill by drill: coaching cues on screen, whistle beeps, +1 minute when a drill is working, and the screen kept awake.

  • 116 original drills

    Across 10 focus areas, from warm-ups to team concepts, each with setup, steps, cues, and variations. Classic drill concepts are common coaching knowledge, but every write-up is written for this app.

  • Works like a real app

    Installs to the home screen, works offline, keeps favorites, notes, and plans on the device with no account, and shares a plan as text with assistant coaches.

Key decisions
DecisionWhy
The plan is the productCoaches don't need more drills; they need the next hour figured out. The library now feeds the builder instead of being the destination.
Rules over AI for planningPractice structure follows known rules. Plain code is instant, free, predictable, and works with no signal.
Park the AI generatorA public app can't hold a private key in the browser. It returns once it can run behind a small server.
Installable web app, not an app store appOne codebase on every phone, free to host, and no app review to wait on. App store versions stay on the roadmap.
No accounts, data stays on the deviceNothing to sign up for, nothing to secure, and nothing about kids or teams leaves the phone. Backup and restore covers switching phones.
Original write-ups onlyv1 leaned on coaching sites. v2 rewrote every drill so the library is mine to share.
What's next
  • Court diagrams

    A simple diagram for each drill, since a picture beats a paragraph for young players.

  • AI drill generator, done safely

    Back behind a small server so the key stays private.

  • Shared plans

    Cloud sync so plans follow you across devices and assistant coaches see the same practice.

  • App stores

    Google Play first (low cost), then the App Store.

More projects