Repository navigation
Expand file tree
/
Copy pathfeatures.html
More file actions
218 lines (199 loc) · 12.1 KB
/
Copy pathfeatures.html
File metadata and controls
218 lines (199 loc) · 12.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>TrendFit — Features</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="canonical" href="https://www.trendfitapp.com/features.html" />
<meta name="description" content="What TrendFit does: four ways to read your Apple Health workout history — trends over time, workouts side by side, repeated GPS routes, and target challenges. Private by design, all on your iPhone." />
<meta name="theme-color" content="#8B5CF6" />
<link rel="alternate" hreflang="en" href="https://www.trendfitapp.com/features.html" />
<link rel="alternate" hreflang="x-default" href="https://www.trendfitapp.com/features.html" />
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:site_name" content="TrendFit" />
<meta property="og:title" content="TrendFit — Features" />
<meta property="og:description" content="Four ways to read your Apple Health workout history — trends over time, workouts side by side, repeated GPS routes, and target challenges." />
<meta property="og:url" content="https://www.trendfitapp.com/features.html" />
<meta property="og:image" content="https://www.trendfitapp.com/images/og-default.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="TrendFit - Track workout trends with privacy-first insights" />
<meta property="og:image:type" content="image/jpeg" />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="TrendFit — Features" />
<meta name="twitter:description" content="Four ways to read your Apple Health workout history — trends over time, workouts side by side, repeated GPS routes, and target challenges." />
<meta name="twitter:image" content="https://www.trendfitapp.com/images/og-default.jpg" />
<meta name="twitter:image:alt" content="TrendFit - Track workout trends with privacy-first insights" />
<!-- Styles -->
<link rel="preconnect" href="https://cdnjs.cloudflare.com">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" />
<script>(function(){var p=localStorage.getItem('theme:preference');if(p==='dawn'||p==='dark')document.documentElement.setAttribute('data-theme',p);})();</script>
<link rel="stylesheet" href="css/style.css?v=2026-09-13-1" />
<!-- Scripts -->
<script defer src="js/includes.js"></script>
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
</head>
<body class="page-doc page-features">
<!-- ============ Header / Navbar (shared include) ============ -->
<div data-include="partials/header.html"></div>
<main class="section">
<div class="container">
<h1>Features</h1>
<p class="doc-lede">
TrendFit reads the workouts already sitting in Apple Health and answers four
questions about them. Every mode is a different question, and the app opens by
asking which one you want answered.
</p>
<ul class="doc-jump">
<li data-mode="trendfit"><a href="#trendfit">TrendFit</a></li>
<li data-mode="stack"><a href="#stack">TrendFitStack</a></li>
<li data-mode="group"><a href="#group">TrendFitGroup</a></li>
<li data-mode="challenge"><a href="#challenge">TrendFitChallenge</a></li>
</ul>
<!-- ============ TrendFit ============ -->
<section class="doc-section" id="trendfit" data-mode="trendfit" aria-labelledby="h-trendfit">
<p class="mode-kicker">TrendFit</p>
<h2 id="h-trendfit">Are my metrics improving over time?</h2>
<p>
Pick one activity and one metric, and TrendFit draws the trend line through it.
The line is coloured by the angle you can actually see on screen — green when it
is going the way you want, red when it is not, yellow when the movement is too
small to mean anything. Pace is read the right way round, so a falling line is
an improvement.
</p>
<ul class="doc-bullets">
<li>Pinch to zoom and drag to pan; the trend line recalculates for whatever window you are looking at.</li>
<li>Heart rate is judged in context — the same rise means something different depending on what your Active Energy did.</li>
<li>History reaches back 3, 6, 12, 24 or 36 months.</li>
</ul>
</section>
<!-- ============ TrendFitStack ============ -->
<section class="doc-section" id="stack" data-mode="stack" aria-labelledby="h-stack">
<p class="mode-kicker">TrendFitStack</p>
<h2 id="h-stack">How do my workouts compare side by side?</h2>
<p>
Put several activities on one chart and see how they divide the work between
them. Stack them daily, weekly, monthly or as a rolling year to see the total
as well as the split.
</p>
<ul class="doc-bullets">
<li>Stackable metrics are the ones that add up: Distance, Active Energy, Workout Duration, Flights Climbed and Swimming Strokes.</li>
<li><strong>Compare Years</strong> draws each calendar year as its own line on a shared January–December axis, so a seasonal dip stops reading as a decline.</li>
<li>The legend names every entry by colour and by shape, so it survives being read aloud.</li>
</ul>
</section>
<!-- ============ TrendFitGroup ============ -->
<section class="doc-section" id="group" data-mode="group" aria-labelledby="h-group">
<p class="mode-kicker">
TrendFitGroup
<span class="badge-new">New in 2.0</span>
</p>
<h2 id="h-group">Am I getting faster on the routes I repeat?</h2>
<p>
Outdoor workouts already carry the GPS route they were recorded on. TrendFitGroup
matches the ones that followed the same path and charts how you have performed
across every repeat of it — so the loop you run twice a week becomes a
measurement rather than a memory.
</p>
<ul class="doc-bullets">
<li>Routes are picked from a swipeable strip of cards, each drawing that route’s own outline. The route you recorded most recently leads the strip, badged <strong>LATEST</strong> and already selected.</li>
<li>Charts plot pace, speed and duration. Distance is deliberately left out — on a fixed route it is the constant, not the variable.</li>
<li>The x-axis counts occurrences of the route, not calendar days, so a three-week gap does not stretch the chart.</li>
<li>Filter to one activity at a time; the pills are built from the routes you actually have.</li>
<li>Route history covers the 200 most recent outdoor workouts from the last 365 days.</li>
</ul>
<p class="doc-note">
The route outlines are drawn from geometry cached on your iPhone. No map tiles are
fetched to render them, and the shapes work with no network at all.
</p>
</section>
<!-- ============ TrendFitChallenge ============ -->
<section class="doc-section" id="challenge" data-mode="challenge" aria-labelledby="h-challenge">
<p class="mode-kicker">TrendFitChallenge</p>
<h2 id="h-challenge">Will I hit my target before time runs out?</h2>
<p>
Set a target and a deadline, and TrendFit projects whether you are on course for
it from the work you have already done. Standings update as new workouts arrive
in Health.
</p>
<ul class="doc-bullets">
<li>Targets are typed in the same notation they are displayed in — a pace target reads <em>5:24</em>, not <em>5.4</em>.</li>
<li>Optional reminders are scheduled on your iPhone, by your iPhone. Nothing is sent anywhere to produce them.</li>
</ul>
</section>
<!-- ============ Accessibility ============ -->
<section class="doc-section" id="readable" aria-labelledby="h-readable">
<h2 id="h-readable">Built to be readable</h2>
<p>
Version 2.0 is the largest accessibility push in TrendFit’s history — twelve
separate pieces of work. Charts are unusually hostile to large text, so most of
it went there.
</p>
<ul class="doc-bullets">
<li>Charts measure their own plot area and draw fewer whole axis labels rather than letting labels overlap. They never abbreviate a label to make it fit.</li>
<li>Every screen scrolls when the text grows, and controls that run out of horizontal room restack instead of truncating.</li>
<li>Legends identify entries by colour <em>and</em> by shape, so a chart still reads when colour alone is not available.</li>
<li>Light appearance was audited end to end, including the contrast of warning colours and secondary text.</li>
<li>Increase Contrast is honoured through appearance variants rather than by branching in code, so it applies everywhere consistently.</li>
</ul>
</section>
<!-- ============ Privacy ============ -->
<section class="doc-section" id="privacy" aria-labelledby="h-privacy">
<h2 id="h-privacy">Your data never leaves your iPhone</h2>
<p>
There is no account, no server and no upload. Every chart, projection and
notification is produced on the device, from data that stays on the device.
</p>
<ul class="doc-bullets">
<li><strong>Read-only against Apple Health.</strong> TrendFit has no write permission at all — it cannot add, change or delete anything in Health.</li>
<li>Version 2.0 <em>removed</em> 15 data types from the permission request that the app was not using. It asks for less than it used to, not more.</li>
<li>Route processing, clustering and caching all happen locally. No map tiles are fetched.</li>
<li>Notifications are composed and scheduled on-device.</li>
</ul>
<p class="doc-note">
Upgrading from 1.5? Health will show its permission sheet again, because Workout
Routes is a new row that did not exist before. Declining it leaves every other
mode working exactly as it does today.
</p>
<p><a href="privacy.html">Read the full privacy policy →</a></p>
</section>
<!-- ============ Requirements ============ -->
<section class="doc-section" id="requirements" aria-labelledby="h-requirements">
<h2 id="h-requirements">Requirements</h2>
<ul class="doc-bullets">
<li>iPhone running iOS 18.0 or later.</li>
<li>Workouts recorded in Apple Health. TrendFitGroup additionally needs outdoor workouts with GPS routes.</li>
<li>English only.</li>
<li>Free. No account, no subscription, no in-app purchases.</li>
</ul>
<div class="doc-cta">
<a class="btn btn-primary" href="https://testflight.apple.com/join/tgFjfCQM" target="_blank" rel="noopener">Join the v2.0 Beta</a>
<a class="btn btn-ghost" href="https://apps.apple.com/ca/app/trendfit/id6751863796" target="_blank" rel="noopener">Download on the App Store</a>
</div>
</section>
</div>
</main>
<!-- ============ Footer ============ -->
<footer class="site-footer">
<div class="container footer-row">
<small>© 2026 TrendFit</small>
<div class="footer-links">
<a href="features.html">Features</a>
<span>·</span>
<a href="faq.html">FAQ</a>
<span>·</span>
<a href="privacy.html">Privacy</a>
<span>·</span>
<a href="terms.html">Terms</a>
<span>·</span>
<a href="mailto:trendfitapp@gmail.com">Contact</a>
</div>
</div>
</footer>
<!-- Cloudflare Web Analytics --><script defer src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon="{"token": "88f8c60681cd4caaaa9c73ec113a9178"}"></script><!-- End Cloudflare Web Analytics -->
</body>
</html>