System 02 · Case file · open sourceopen source

A running coach that writes tomorrow's workout to your watch — and rewrites it when your body says no.Bežecký tréner, ktorý zapíše zajtrajší tréning do tvojich hodiniek — a prepíše ho, keď telo povie nie.

A full-stack AI marathon coach I designed and built end to end. It follows the proven Hanson method, computes exact paces in code, lets an LLM handle the judgment calls, and pushes each session straight to Garmin — adapting daily to your recovery.Full-stack AI maratónsky tréner, ktorý som navrhol a postavil od začiatku do konca. Drží sa overenej Hansonovej metódy, počíta presné tempá v kóde, úsudok necháva na LLM a každý tréning zapíše priamo do Garminu — denne sa prispôsobuje tvojej regenerácii.

Public · MITVerejný · MIT Next.js 16FastAPIGeminiGarmin ConnectSupabase Deployed on RenderNasadené na Renderi
Morning signalsRanné signály
HRVlownízke
Body Battery38
Acute : chronicAkútne : chronické1.4
DecisionRozhodnutie
Deterministic paces stay locked. The LLM reads the strain and swaps today's tempo for an easy run, −15% volume.Deterministické tempá zostávajú pevné. LLM prečíta záťaž a vymení dnešný tempový beh za voľný, −15 % objemu.
On your wristNa zápästí
EASY
8 km
VOĽNÝ
8 km
Written to Garmin — ready before you lace up.Zapísané do Garminu — hotové skôr, než sa obuješ.
The problemProblém

A great training plan that ignores your recovery is a fast way to get injured.Skvelý tréningový plán, ktorý ignoruje tvoju regeneráciu, je rýchla cesta k zraneniu.

The Hanson method builds real marathon fitness — but a static PDF plan can't know you slept badly, your HRV crashed, or you're carrying too much load. Following it blindly on a bad day breaks you; skipping it kills the progression. It needs to adapt, every single morning.Hansonova metóda buduje reálnu maratónsku kondíciu — ale statický PDF plán nevie, že si zle spal, že ti spadlo HRV alebo že nesieš priveľkú záťaž. Slepé dodržiavanie v zlý deň ťa zlomí; vynechanie zabije progresiu. Musí sa prispôsobiť — každé jedno ráno.

The daily loopDenná slučka

Four steps, run fresh every morning.Štyri kroky, nanovo každé ráno.

1

Read the bodyPrečítaj telo

Pull last night's HRV, Body Battery, resting HR and training load from Garmin Connect.Stiahni včerajšie HRV, Body Battery, kľudový tep a tréningovú záťaž z Garmin Connect.

garmin connect api
2

Compute the planVypočítaj plán

A deterministic core sets exact paces and weekly structure from your goal time — pure Hanson math, no guessing.Deterministické jadro nastaví presné tempá a týždňovú štruktúru z tvojho cieľového času — čistá Hansonova matematika, žiadne hádanie.

deterministic engine
3

Decide the adaptationRozhodni adaptáciu

Gemini weighs today's strain against the plan and decides: proceed, ease off, or move the hard session.Gemini zváži dnešnú záťaž oproti plánu a rozhodne: pokračuj, uber, alebo presuň tvrdý tréning.

llm judgment
4

Write it to the watchZapíš do hodiniek

The final workout — steps, paces, targets — is pushed to Garmin so it's waiting on your wrist. In Slovak, in km.Finálny tréning — kroky, tempá, ciele — sa pošle do Garminu a čaká na zápästí. Po slovensky, v kilometroch.

ArchitectureArchitektúra

A real full-stack app — front to back.Reálna full-stack aplikácia — spredu dozadu.

FrontendFrontend

8-screen web appWebapka s 8 obrazovkami

Onboarding, plan overview, daily session, calendar, progress, settings — a full product surface, not a script.Onboarding, prehľad plánu, denný tréning, kalendár, progres, nastavenia — plnohodnotný produkt, nie skript.

Next.js 16React 19TypeScriptTailwindSupabase
BackendBackend

~2,435-line API~2 435-riadkové API

FastAPI service that runs the pace engine, calls the LLM, talks to Garmin and encrypts every credential at rest.FastAPI služba, ktorá poháňa pace engine, volá LLM, komunikuje s Garminom a šifruje každý údaj.

FastAPIPythonGeminiGarmin Connectencryption
The split that makes it trustworthyRozdelenie, ktoré tomu dáva dôveru

Deterministic core + LLM judgmentDeterministické jadro + úsudok LLM

Anything that must be exact — paces, distances, weekly volume — is plain Python, verifiable and repeatable. The LLM only handles what genuinely needs judgment: how to adapt when your recovery is off. You never get a hallucinated pace.Všetko, čo musí byť presné — tempá, vzdialenosti, týždňový objem — je čistý Python, overiteľný a opakovateľný. LLM rieši len to, čo naozaj vyžaduje úsudok: ako adaptovať, keď regenerácia zaostáva. Nikdy nedostaneš vymyslené tempo.

The same principle as everything I build: code for what must be correct, the model for what needs a decision. Reliability by design, not by hope.Rovnaký princíp ako všetko, čo staviam: kód na to, čo musí byť správne, model na to, čo potrebuje rozhodnutie. Spoľahlivosť z návrhu, nie z nádeje.

What it readsČo číta

Real signals from a real device.Reálne signály z reálneho zariadenia.

Recovery

HRV

Overnight heart-rate variability — the earliest sign of accumulated fatigue.Nočná variabilita tepu — najskorší signál nazbieranej únavy.

Energy

Body Battery

Garmin's charge estimate — how much you actually have to spend today.Garmin odhad „nabitia" — koľko dnes reálne máš na míňanie.

Load

Acute : chronicAkútne : chronické

The injury-risk ratio — recent load vs. what your body is used to.Pomer rizika zranenia — nedávna záťaž vs. to, na čo je telo zvyknuté.

Baseline

Resting HR & sleepKľudový tep a spánok

Trend lines that flag when something's off before you feel it.Trendy, ktoré upozornia skôr, než to sám pocítiš.

Goal

Target raceCieľové preteky

Your marathon date and goal time anchor every pace the engine computes.Dátum maratónu a cieľový čas ukotvujú každé tempo, ktoré engine počíta.

History

Completed runsOdbehnuté tréningy

What you actually ran feeds back into the next day's decision.To, čo si naozaj odbehol, sa vracia do rozhodnutia na ďalší deň.

See it runningNaživo v appke

This is what it actually looks like.Takto to v skutočnosti vyzerá.

Morning readiness report — Sleep, HRV, Body Battery, training readiness
Morning readinessRanná pripravenosť

Sleep, HRV, Body Battery and a readiness score — read from Garmin each morning. Low readiness triggers a plan adjustment.Spánok, HRV, Body Battery a skóre pripravenosti — každé ráno z Garminu. Nízka pripravenosť spustí úpravu plánu.

Today's workout — exact paces per step, in km
Today's workoutDnešný tréning

Exact paces computed from your goal time — warm-up and tempo steps in km, straight from the deterministic engine.Presné tempá vypočítané z cieľového času — rozcvička a tempo v km, priamo z deterministického jadra.

Completed run — HR-zone split and the coach's verdict
After the runPo behu

Every session is scored against the method — an HR-zone split and an honest verdict, saved back for the next decision.Každý beh vyhodnotený voči metóde — rozloženie HR zón a úprimný verdikt, uložený pre ďalšie rozhodnutie.

Shipped, not slidewareNasadené, nie prezentácia

Built in the open, from first commit to deploy.Postavené transparentne, od prvého commitu po nasadenie.

159
commits, ~35 pull requestscommitov, ~35 pull requestov
~2435
lines of backend Pythonriadkov backend Pythonu
8
product screensproduktových obrazoviek
3
plan variants · SK · kmvarianty plánu · SK · km
See for yourselfPresvedč sa sám
Unlike most portfolio claims, this one you can read line by line.Na rozdiel od väčšiny tvrdení v portfóliu, toto si vieš prečítať riadok po riadku.

The whole thing is public under MIT — architecture, the deterministic engine, the Garmin integration, the commit history. Nothing to take on faith.Celé je verejné pod MIT — architektúra, deterministický engine, Garmin integrácia, história commitov. Nič, čo by si musel brať na slovo.

What this demonstratesČo to o mne hovorí

I ship complete products, not just prompts.Dodávam hotové produkty, nielen prompty.

Full-stack deliveryFull-stack dodaniefrontend, backend, database and deploy — the whole thing, solo.frontend, backend, databáza a nasadenie — celé, sám.
Real hardware integrationIntegrácia s reálnym hardvéromtwo-way Garmin Connect — reads biometrics, writes workouts back to the device.obojsmerný Garmin Connect — číta biometriu, zapisuje tréningy späť do zariadenia.
Deterministic-AI hybridDeterministicko-AI hybridexact logic in code, judgment in the LLM — the same discipline across every project I build.presná logika v kóde, úsudok v LLM — rovnaká disciplína naprieč každým projektom.
Security-awareBezpečnosť v hlaveevery credential encrypted at rest; third-party access handled carefully.každý údaj šifrovaný; prístup tretích strán riešený obozretne.
Self-directedSamostatnosťspotted a real need, scoped it, and shipped a working, deployed app with AI-assisted development.videl reálnu potrebu, ohraničil ju a dodal funkčnú, nasadenú appku cez AI-assisted development.
Domain modellingModelovanie doményencoded a real coaching methodology into software that a runner can actually trust.zakódoval reálnu tréningovú metodiku do softvéru, ktorému bežec naozaj verí.