projects/ferrokinetic/README.md
Flagship Personal Product · Invite-Only Private Beta

Ferrokinetic

A deterministic-first training and recovery platform that combines Polar wearable data, structured workout planning, athlete context and user-approved plan adaptation.

I built Ferrokinetic as a real mobile product for my own endurance and Spartan/OCR training, with a strong focus on auditability, data provenance and reliable full-stack engineering.

PRIVATE_BETA // ANDROID_FIRST // ACTIVE_FIELD_TESTING
core_loop.flow

System Flow

Visible · Auditable · User-controlled
Polar + athlete context
Deterministic decision
User approval
Training execution
Polar actual
After Action Report
Weekly reflow proposal
why_ferrokinetic.md

Why I Built It

My training combines planned strength work, running, trail sessions, OCR-specific preparation, event goals, changing availability and Polar recovery data.

When those signals lived separately, simple questions became surprisingly difficult:

  • >What should I do today?
  • >Does today's recovery state materially change the planned session?
  • >Did the completed workout match the intended training stimulus?
  • >Should the remaining week be reviewed after an unexpectedly hard or long session?
  • >Is the recommendation based on fresh, trustworthy data?

Ferrokinetic was built to make those decisions visible, auditable and user-controlled.

decision_architecture.ts

Deterministic First, AI Second

Ferrokinetic intentionally does not let an LLM invent readiness decisions.

Backend rules calculate recovery and freshness state, sleep and ANS context, recent load, readiness bands, safety restrictions, workout progression and plan compatibility. Those decisions are persisted as structured state.

AI is then allowed to explain those facts, summarize selected outcomes and assist with constrained planning context.

RULES STATE EXPLANATION

Not: prompt → AI invents application state.

state_integrity.log

User Control & Immutable History

  • Daily recommendations are persisted and auditable.
  • Plans and decisions are versioned rather than silently overwritten.
  • A completed subjective morning check-in can refine an objective wearable-based decision.
  • Later Polar synchronization cannot silently overwrite that refined decision.
  • Weekly reflow produces a proposal that the athlete explicitly accepts or dismisses.
  • Original planned workouts remain visible when an effective replacement is created.
polar_provenance.json

Wearable Data Without Invented Precision

Ferrokinetic integrates with Polar AccessLink for training, sleep, Nightly Recharge and ANS Charge. It distinguishes confirmed, partial, stale and unavailable data—and deliberately does not fabricate values that the source does not provide reliably.

Moving pacewhen source data is unavailable
Stopped timewhen source data is unavailable
GPS routewhen source data is unavailable
Elevation profilewhen source data is unavailable
Load valueswhen source data is unavailable
Recovery confidencewhen source data is unavailable

User-scoped synchronization, a historical Cardio Load ledger/backfill, athlete IANA timezone, a canonical DailyDecision shared across relevant screens, and finalized same-day sleep gating for the morning check-in keep source context explicit without exposing personal health values.

planning_core_foundry.ts

Planning & Core Foundry

  • >Monday–Sunday weekly planning
  • >Availability, off/easy-only days and protected training anchors
  • >Event goals and event-aware phases: base, build, specific preparation, taper, event week and recovery
  • >Optional weather, location and equipment context with provenance
  • >Versioned weekly drafts and explicit athlete approval
  • >Canonical workout-template builder with typed exercise prescriptions, laterality, rest and RIR
  • >Immutable planned-workout snapshots, deterministic progression and compatibility-based swaps
  • >Immutable swap history and structured endurance session composer
workout_execution.sh

From Plan to Execution

Strength

A canonical strength runner supports typed sets, reps, load, assistance and holds where appropriate, per-side handling, rest timers, session notes, exercise history and progression context.

Endurance

Structured running, trail-running and cycling intent is recorded separately. The app waits for safely matched Polar activity data rather than pretending the phone recorded metrics that it did not.

KeepReduceReplaceSkipOverride

These are explicit, auditable athlete actions.

after_action_report.md

After Action Report

After completed training, Ferrokinetic can connect planned intent, safely matched Polar activity and athlete-reported execution context.

Polar activity overview, duration, distance and heart rate
Pace and elevation where supported
Load provenance and plan-versus-actual comparison
Stops/context, heat/humidity and fueling
Pain/context notes and equipment issues
GPS route, elevation and pace profiles only where compatible stored samples exist
Compact unavailable states when source data is missing

The report does not reconstruct unavailable Polar data or make medical interpretations of athlete notes.

adaptive_reflow.proposal

Adaptive, But Never Silent

Completed training can trigger a bounded proposal to modify eligible future sessions. Ferrokinetic does not silently rewrite the remaining week.

The athlete sees the proposed change and explicitly accepts or dismisses it. This preserves the original plan and maintains an auditable history of adaptation.

private_beta_operations.log

Private Beta as a Real Product System

  • >Clerk authentication with persistent owner and beta_tester roles
  • >Invite-only access bound to verified email and strict user-scoped data isolation
  • >In-app Beta Feedback with optional user-selected screenshot and a safe diagnostic bundle
  • >Owner-only feedback inbox, severity/lifecycle status, request IDs, private preview and internal notes
  • >SMTP/Brevo notifications and private S3/R2-compatible screenshot storage
  • >Graceful degradation: report persistence succeeds even when email or screenshot storage fails

This exists to operate an actual closed beta, not simply as a demo feature.

privacy_safety.txt

Privacy & Safety Boundaries

Ferrokinetic processes fitness and recovery data as sensitive user data.

  • Strict user-scoped access
  • No sale of health/recovery data
  • Diagnostic bundles exclude secrets and high-sensitivity data by default
  • No tokens, raw Polar payloads, GPS routes, raw health values or private athlete notes by default

Ferrokinetic is designed for fitness, performance and training context.

It is not medical advice, diagnosis, treatment, injury prediction or a replacement for a coach or clinician.

technical_architecture.yaml

Technical Architecture

MobileExpo · React Native · Expo Router · TypeScript
APIBun · Hono · TypeScript
DatabasePostgreSQL · Drizzle ORM · Versioned Migrations
AuthenticationClerk
Wearable IntegrationPolar AccessLink
AIGemini-assisted structured explanations constrained by deterministic backend facts
DeploymentCoolify
Storage / Beta OperationsPrivate S3/R2-compatible object storage · SMTP/Brevo
TestingBun API Tests · App Tests · TypeScript Checks · Migration Smoke Tests · Regression Contracts · Android Release Builds
Typed contracts + immutable snapshots + user-scoped state
Not loosely connected screens + AI-generated application state
current_status.json

Current Status

Ferrokinetic is currently in a creator-led, invite-only private beta. The core personal daily-use loop is implemented:

Onboarding → Polar Sync → DailyDecision → Plan → Workout Execution → Polar Actual Activity → After Action Report → Weekly Reflow → Feedback / Beta Operations

Current work focuses on real-device validation, regression hardening, field testing with real training data, private-beta operations and continued product refinement.

Garmin support is a future integration.

engineering_evidence.txt

What This Project Demonstrates

Deterministic Decision SystemsWearable Data IntegrationData ProvenanceImmutable State & AuditabilityReact Native Product EngineeringTypeScript / Bun Backend EngineeringPostgreSQL Data ModelingAuthentication & User IsolationPrivate Beta OperationsRegression TestingAI-Assisted Engineering With Guardrails
related_reading.index