All work

Case 04 · Product design & development, solo · personal PWA

Baki
concept to shipped, every decision mine.

Stack · React + FastAPI · mobile-firstStatus · Running daily · not publicly launched
Baki real app screens (home, nutrition, training) composed on the Aura scene; demo data only

374

commits in two months

344

backend tests, green

61

components on 11 primitives

89

API endpoints · 28 tables

The short version

  • A strength-and-nutrition PWA with exactly one user — me — running daily on my phone.
  • I designed and built all of it: product, design system, frontend, backend, the coach.
  • The spine is one decision: a deterministic engine owns every health calculation, and the AI is only allowed to talk about it.
  • Living inside it is what found the bugs — a form nobody could answer honestly, a field that silently voided my training, an AI that claimed it had saved something it hadn't.

01 · What it is

A private personal trainer with exactly one user, on purpose.

Strength training and nutrition in one product, built on evidence-based principles and female physiology. It installs as a PWA on my phone and runs on a local server — private by decision, not by limitation. The riskiest assumption was never market size; it was whether the thing could support a real routine without becoming noisy. The question was never "how do I monetise this?" It was "what would I build if I had to live with every product decision I made?"

02 · The product decisions that matter

Before any screen, I had to decide what the product would never do.

Health above progress

AI communicates, doesn't calculate

Maintenance or recomposition — never a deficit

Product invariants — rules the product enforces even when the user would prefer it didn't.

03 · The architecture decision, and why it was a design call

Deterministic engine + AI communication layer, not the other way around.

Option A · rejected

Let the AI decide

Fast to build, impossible to test.

Option B · chosen

Engine calculates, AI communicates

Deterministic, auditable, and the coach has no write access to it.

A product design decision that happens to have engineering consequences, not the other way around.

The day the rule proved itself

The coach said “logged”. Nothing was logged.

Caught by checking the database, not by trusting the reply

04 · Problems met on the way

Living inside your own product is brutal: every shortcut you took finds you within days.

Nobody knows how many grams of oil are in their pad thai

If honest users can’t answer the form, the form is the bug

I trained — and the app said “0 hard sets”

Detecting isn’t preventing — the gate goes where data is written

HTTPS was one command away — and the answer was no

Never promise a notification that can’t leave the building

05 · The product

Two surfaces, one engine: training and nutrition, built to work together.

Training

Multi-week challenges and single sessions. Every set logs reps and RIR; double progression picks the next weight.

Nutrition

Meal log over a food library, tracking kcal and macros, with a per-meal day navigator.

Motion proof · 26 seconds, recorded live

Not a prototype. This is the product running.

Home, nutrition, training and progress in one take of the real build. The coach opens with a check-in nudge — a card the engine raised, offered as Accept / Not now. The AI never acts on its own, and Progress reads a 7-day weight average back in plain language.

Baki home screen: today's training and nutrition at a glance

Home

Where you stand, surfaced calmly

Today's session and the day's macros in one glance. The engine has already done the reading; the screen's job is to stay quiet about it until something matters.

Baki nutrition day view: macro targets and per-meal breakdown

Nutrition

Eating enough is the success state

The day reads against protein, kcal and a fat floor, broken down per meal. Maintenance is the target: a deficit shows up as a warning, never as an achievement.

Baki training library: routines and today's session

Training

The rule picks the next weight, not a guess

Multi-week challenges beside single sessions, with a search-and-filter library for breadth without noise. Behind every logged set, the double-progression rule decides what comes next.

Real UI captured from the running app · demo data only (no personal health data)

06 · The system underneath

Brand discipline, applied to product: every token is a decision, documented where it lives.

A semantic token system — colour, radius, spacing and type as CSS variables — under 11 re-themed primitives and 61 domain components. The domain layer grew from 28 to 61 components in a month of real use; the 11 primitives never changed once. The whole palette was then replaced in a one-day rebrand, which is the same fact from the other side.

07 · How it was built

Designed and built solo, with AI as the development partner, every decision directed by me.

08 · What I would validate next

Shipping solo proves judgment and execution. The next layer is evidence from people who are not me.

Test whether the coach cards feel supportive or intrusive after repeated daily use.

Validate the nutrition language with users who dislike calorie-focused tracking.

Stress-test empty states and missed-day recovery so the product supports lapses without guilt.

09 · What this proves

One person took this from first sketch to a PWA in daily use — no PM, no budget review, no stakeholder approval.
the clearest version of "resourceful self-starter, minimal oversight." The design system and iterative delivery are what made that possible at solo scale.

1

user · me, by design

2

surfaces: training + nutrition

1

engine · no AI in the calculation layer

0

stakeholders to approve it