BUHAT

You write the plan. They log the bar work. You read the week.

Buhat is a strength and nutrition tracker for one coach and the athletes they program. Not a feed, not a marketplace. A log you can trust, read a week at a time.

2,900 kcal 220 P 295 C 93 F

Targets they eat to. Calories are never typed.

You set protein, carbs and fat. Calories are derived from them, once, in one shared formula the API and the browser both read, so the two can never disagree. A day's macros come from logged food when there is any, and from what they typed otherwise — never a sum of the two.

4 @ 6, 4 @ 5, 5 @ 5 x 2 sets

Your shorthand is the interchange format.

Write a prescription the way you would text it. The athlete's logger opens between sets with the rows already filled in, one hand on the phone, and the estimated 1RM recomputes as each set is typed. Anything it cannot parse still shows verbatim and gives a blank row rather than an error.

Comp Squat example day, not real data
Set kg Reps RPE e1RM
1 180 4 6 228.0
2 185 4 5 240.5
3 5 5 —
4 5 5 —

4 4 weeks × days

A block is weeks by days, and history is never quietly lost.

Fill a block from a catalog of about 130 movements, each with a cue and a default prescription, or drop in one of 19 ready-made days. Copying a week forward skips any day that already has logged sets. Removing a movement that has logged sets warns you with the count first. A plan edit cannot destroy a logged set.

MonSun

The week is the unit of judgement.

A single day is an input. The Monday to Sunday rollup is the output, and only days with calories logged count toward it, so a missed entry shows as missing rather than as zero. Bodyweight reads as a 7-day average. Squat, bench and deadlift lead the dashboard with their estimated 1RM, because the block is building toward the platform.

8,170 foods

USDA foods, seeded on first boot. No key, no network.

FoodData Central, with 14,612 household measures, ships inside the app and is searched locally. Home-cooked dishes that USDA has never heard of become recipes: a list of cooked ingredients and a cooked weight, with the macros worked out from the ingredients rather than typed in.

coachwrites the plan athletewrites the log

The boundary is enforced on the server, and it fails closed.

You can read every set and every macro your athletes log, and change none of it: the log is their record of what happened. You write the plan, the movements on it and their targets. A new endpoint is owner-only until it is explicitly marked as part of the plan, so nothing leaks by omission.

  • Opening someone else's log leaves a mark in an audit trail.
  • Whether a coach may read that trail is a switch the owner flips, per coach.
  • Sessions are revoked server-side. Signing out actually signs out.

3 doors, one log

Each person gets the app that fits their hands.

Athlete
The tracker. Session logger built for between sets; daily log, food and recipes, the weekly review, and their own activity trail.
Coach
Your roster. Open any athlete's log without leaving the domain or signing in twice, write their blocks, set their targets, and put your own colours on it.
Owner
Onboard a coach by typing their Google address. That is the whole step. View the app as any coach, and read everything that has been done and by whom.

Two accounts today. Built for the next few.

Buhat runs one coach and one athlete right now, on one machine, with one database file and no ads. There is no sign-up: everyone who can sign in was added by name. If that is how you would rather run your athletes, say so.

Get in touch Sign in with Google