No shoes yet — add your first pair.
| Name | Brand / Model | Purchased | Color | Status | |
|---|---|---|---|---|---|
| {{ shoe.name }} | {{ brandModel(shoe) }} | {{ shoe.purchase_date ? fmtDate(shoe.purchase_date) : '—' }} | {{ shoe.color || '—' }} | {{ shoe.retired_date ? 'Retired' : 'Active' }} |
|
No activities yet.
| Date | Type | Duration | Distance | Shoe | Notes | |
|---|---|---|---|---|---|---|
| {{ fmtDatetime(act.timestamp) }} | {{ act.activity_type }} | {{ fmtDuration(act.duration_seconds) }} | {{ act.distance_meters ? (act.distance_meters / 1000).toFixed(2) + ' km' : '—' }} | {{ shoeMap[act.shoe_id] || '—' }} | {{ act.notes || '' }} |
|
No lifts logged yet.
Personal records
| Exercise | Max weight | Best e1RM | Sessions | Last lifted |
|---|---|---|---|---|
| {{ pr.exercise }} | {{ fmtKg(pr.max_weight_kg) }} kg | {{ fmtKg(pr.best_e1rm_kg) }} kg | {{ pr.entry_count }} | {{ fmtDate(pr.last_lifted) }} |
History
| Date | Exercise | Weight | Reps | e1RM | Notes | |
|---|---|---|---|---|---|---|
| {{ fmtDatetime(lift.timestamp) }} | {{ lift.exercise }} | {{ fmtKg(lift.weight_kg) }} kg | {{ lift.reps }} | {{ fmtKg(lift.e1rm_kg) }} kg | {{ lift.notes || '' }} |
|
No weigh-ins logged yet.
Current
{{ fmtKg(currentWeight) }} kg
30-day change
— {{ weightChange30d > 0 ? '+' : '' }}{{ fmtKg(weightChange30d) }} kg
Trend
History
| Date | Weight | Notes | |
|---|---|---|---|
| {{ fmtDatetime(w.timestamp) }} | {{ fmtKg(w.weight_kg) }} kg | {{ w.notes || '' }} |
|
No data yet.
{{ s.shoe_name }}
{{ s.activity_count }} session{{ s.activity_count !== 1 ? 's' : '' }}
{{ s.total_hours }}h / {{ s.expected_lifetime_hours }}
Total time
{{ s.total_km }}km / {{ s.expected_lifetime_km }}
Total distance
Weekly activity
Hours per week, stacked by type
Activity heatmap
Daily minutes — past 12 months
Run pace vs. distance
Each dot is a run · pace in min/km · coloured oldest→newest