# fatuko/iron-workout-app architecture

> Architecture diagram of the GitHub repository fatuko/iron-workout-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fatuko/iron-workout-app
- Repository: https://github.com/fatuko/iron-workout-app

## Overview

IRON is a mobile workout tracker. The current client workflow starts at Home, where users can open a workout or splits; workout set entry is draft-only, while history and progression screens display starter content. The API contains a 1RM estimator and research-backed constants, but no sampled progression endpoint or client integration. Supabase persistence, authentication, and schema/RLS are documented plans, not connected runtime paths; those planned capabilities are shown without invented data-flow edges.

Main entry points: [`app/src/app/_layout.tsx`](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/_layout.tsx) (Tab navigation), [`app/src/components/page-shell.tsx`](https://github.com/fatuko/iron-workout-app/blob/main/app/src/components/page-shell.tsx) (Page components), [`app/src/app/index.tsx`](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/index.tsx) (Home), [`app/src/app/splits.tsx`](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/splits.tsx) (Split setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Mobile client"]
  node_tabs["Tab navigation<br/>[_layout.tsx]"]
  node_home["Home<br/>[index.tsx]"]
  node_splits["Split setup<br/>[splits.tsx]"]
  node_workout["Workout entry<br/>[workout.tsx]"]
  node_history["Session history<br/>[history.tsx]"]
  node_progress["Progress trends<br/>[progression.tsx]"]
  node_shell["Page components<br/>[page-shell.tsx]"]
end

subgraph group_engine["Progression logic"]
  node_engine["Progression service"]
  node_one_rm["1RM estimator<br/>[one_rm.py]"]
  node_constants["Training constants<br/>[constants.py]"]
  node_citations["Research citations<br/>[citations.json]"]
end

subgraph group_data["Planned data layer"]
  node_postgres[("Workout database")]
  node_supabase["Supabase"]
end

node_user(("Lifter"))

node_user -->|"opens"| node_tabs
node_tabs -->|"routes"| node_home
node_tabs -->|"routes"| node_splits
node_tabs -->|"routes"| node_workout
node_tabs -->|"routes"| node_history
node_tabs -->|"routes"| node_progress
node_home -->|"links to"| node_workout
node_home -->|"links to"| node_splits
node_splits -->|"renders"| node_shell
node_workout -->|"renders"| node_shell
node_history -->|"renders"| node_shell
node_progress -->|"renders"| node_shell
node_one_rm -->|"reads limits"| node_constants
node_constants -->|"traces values to"| node_citations

click node_tabs "https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/_layout.tsx"
click node_home "https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/index.tsx"
click node_splits "https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/splits.tsx"
click node_workout "https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/workout.tsx"
click node_history "https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/history.tsx"
click node_progress "https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/progression.tsx"
click node_shell "https://github.com/fatuko/iron-workout-app/blob/main/app/src/components/page-shell.tsx"
click node_engine "https://github.com/fatuko/iron-workout-app/tree/main/api/app/services"
click node_one_rm "https://github.com/fatuko/iron-workout-app/blob/main/api/app/services/one_rm.py"
click node_constants "https://github.com/fatuko/iron-workout-app/blob/main/api/app/services/constants.py"
click node_citations "https://github.com/fatuko/iron-workout-app/blob/main/api/app/data/citations.json"
click node_postgres "https://github.com/fatuko/iron-workout-app/tree/main/supabase"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_tabs,node_home,node_splits,node_workout,node_history,node_progress,node_shell toneBlue
class node_engine,node_one_rm,node_constants,node_citations toneAmber
class node_postgres,node_supabase toneMint
class node_user toneIndigo
```

## Components

### Mobile client

- [Tab navigation](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/_layout.tsx): `app/src/app/_layout.tsx`
- [Home](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/index.tsx): `app/src/app/index.tsx`
- [Split setup](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/splits.tsx): `app/src/app/splits.tsx`
- [Workout entry](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/workout.tsx): `app/src/app/workout.tsx`
- [Session history](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/history.tsx): `app/src/app/history.tsx`
- [Progress trends](https://github.com/fatuko/iron-workout-app/blob/main/app/src/app/progression.tsx): `app/src/app/progression.tsx`
- [Page components](https://github.com/fatuko/iron-workout-app/blob/main/app/src/components/page-shell.tsx): `app/src/components/page-shell.tsx`

### Progression logic

- [Progression service](https://github.com/fatuko/iron-workout-app/tree/main/api/app/services): `api/app/services`
- [1RM estimator](https://github.com/fatuko/iron-workout-app/blob/main/api/app/services/one_rm.py): `api/app/services/one_rm.py`
- [Training constants](https://github.com/fatuko/iron-workout-app/blob/main/api/app/services/constants.py): `api/app/services/constants.py`
- [Research citations](https://github.com/fatuko/iron-workout-app/blob/main/api/app/data/citations.json): `api/app/data/citations.json`

### Planned data layer

- [Workout database](https://github.com/fatuko/iron-workout-app/tree/main/supabase): `supabase`
- **Supabase**

### Other components

- **Lifter**

## Connections

- Lifter → Tab navigation: opens
- Tab navigation → Home: routes
- Tab navigation → Split setup: routes
- Tab navigation → Workout entry: routes
- Tab navigation → Session history: routes
- Tab navigation → Progress trends: routes
- Home → Workout entry: links to
- Home → Split setup: links to
- Split setup → Page components: renders
- Workout entry → Page components: renders
- Session history → Page components: renders
- Progress trends → Page components: renders
- 1RM estimator → Training constants: reads limits
- Training constants → Research citations: traces values to
