-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
437 lines (420 loc) · 48.1 KB
/
Copy pathindex.html
File metadata and controls
437 lines (420 loc) · 48.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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
<!doctype html>
<html lang="en" class="scroll-smooth md:scroll-pt-20">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Dreeve - Self-hosted, open-source dashboard for your sports and fitness data</title>
<meta name="description" content="Dreeve is a free, open-source, self-hosted dashboard that turns every workout into beautiful charts, deep insights and stats that actually make sense without handing anything over to a third party."/>
<link rel="canonical" href="https://dreeve.app/"/>
<link rel="icon" type="image/svg+xml" href="https://raw.githubusercontent.com/dreeveapp/dreeve/master/public/assets/images/logo.svg"/>
<meta name="theme-color" content="#F26822"/>
<meta property="og:type" content="website"/>
<meta property="og:site_name" content="Dreeve"/>
<meta property="og:title" content="Dreeve - Self-hosted, open-source dashboard for your sports and fitness data"/>
<meta property="og:description" content="A self-hosted dashboard that turns every workout into beautiful charts, deep insights and stats without handing anything over to a third party."/>
<meta property="og:url" content="https://dreeve.app/"/>
<meta property="og:image" content="https://raw.githubusercontent.com/dreeveapp/dreeve/master/public/assets/images/logo.svg"/>
<meta property="og:image:type" content="image/svg+xml"/>
<meta property="og:image:alt" content="Dreeve logo"/>
<link rel="preconnect" href="https://fonts.googleapis.com"/>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet"/>
<link href="dist/app.min.css?v=598baf7c" rel="stylesheet"/>
<script defer src="https://analytics.robiningelbrecht.be/script.js" data-website-id="38bb383d-32cf-4d59-aaa2-b6eceaa245e2" data-domains="dreeve.app"></script>
</head>
<body class="font-sans bg-white text-gray-900">
<header class="md:sticky md:top-0 md:z-50 border-b border-gray-200/70 bg-white/85 backdrop-blur">
<input type="checkbox" id="menu-toggle" class="peer hidden" aria-hidden="true">
<nav class="max-w-6xl mx-auto px-4 sm:px-5 py-3 sm:py-4 flex items-center justify-between gap-3">
<a href="#" class="flex items-center gap-2 min-w-0">
<img src="https://raw.githubusercontent.com/dreeveapp/dreeve/master/public/assets/images/logo.svg"
alt="Logo" class="size-7 sm:size-8 shrink-0"/>
<span class="font-extrabold text-gray-900 text-sm sm:text-base truncate">Dreeve</span>
</a>
<div class="hidden md:flex items-center gap-7 text-sm text-gray-600">
<a href="#features" class="nav-link">Features</a>
<a href="#install" class="nav-link">Install</a>
<a href="https://docs.dreeve.app" class="nav-link">Docs</a>
<a href="https://github.com/dreeveapp/dreeve" class="nav-link">GitHub</a>
</div>
<div class="flex items-center gap-2">
<a href="https://www.buymeacoffee.com/ingelbrecht" target="_blank" rel="noopener"
class="hidden sm:inline-flex btn-nav btn-coffee">
<svg class="h-4" viewBox="0 0 884 1279" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M472.623 590.836C426.682 610.503 374.546 632.802 306.976 632.802C278.71 632.746 250.58 628.868 223.353 621.274L270.086 1101.08C271.74 1121.13 280.876 1139.83 295.679 1153.46C310.482 1167.09 329.87 1174.65 349.992 1174.65C349.992 1174.65 416.254 1178.09 438.365 1178.09C462.161 1178.09 533.516 1174.65 533.516 1174.65C553.636 1174.65 573.019 1167.08 587.819 1153.45C602.619 1139.82 611.752 1121.13 613.406 1101.08L663.459 570.876C641.091 563.237 618.516 558.161 593.068 558.161C549.054 558.144 513.591 573.303 472.623 590.836Z" fill="currentColor"></path>
<path fill="currentColor" class="group-hover/menu-item:fill-gray-900" d="M879.567 341.849L872.53 306.352C866.215 274.503 851.882 244.409 819.19 232.898C808.711 229.215 796.821 227.633 788.786 220.01C780.751 212.388 778.376 200.55 776.518 189.572C773.076 169.423 769.842 149.257 766.314 129.143C763.269 111.85 760.86 92.4243 752.928 76.56C742.604 55.2584 721.182 42.8009 699.88 34.559C688.965 30.4844 677.826 27.0375 666.517 24.2352C613.297 10.1947 557.342 5.03277 502.591 2.09047C436.875 -1.53577 370.983 -0.443234 305.422 5.35968C256.625 9.79894 205.229 15.1674 158.858 32.0469C141.91 38.224 124.445 45.6399 111.558 58.7341C95.7448 74.8221 90.5829 99.7026 102.128 119.765C110.336 134.012 124.239 144.078 138.985 150.737C158.192 159.317 178.251 165.846 198.829 170.215C256.126 182.879 315.471 187.851 374.007 189.968C438.887 192.586 503.87 190.464 568.44 183.618C584.408 181.863 600.347 179.758 616.257 177.304C634.995 174.43 647.022 149.928 641.499 132.859C634.891 112.453 617.134 104.538 597.055 107.618C594.095 108.082 591.153 108.512 588.193 108.942L586.06 109.252C579.257 110.113 572.455 110.915 565.653 111.661C551.601 113.175 537.515 114.414 523.394 115.378C491.768 117.58 460.057 118.595 428.363 118.647C397.219 118.647 366.058 117.769 334.983 115.722C320.805 114.793 306.661 113.611 292.552 112.177C286.134 111.506 279.733 110.801 273.333 110.009L267.241 109.235L265.917 109.046L259.602 108.134C246.697 106.189 233.792 103.953 221.025 101.251C219.737 100.965 218.584 100.249 217.758 99.2193C216.932 98.1901 216.482 96.9099 216.482 95.5903C216.482 94.2706 216.932 92.9904 217.758 91.9612C218.584 90.9319 219.737 90.2152 221.025 89.9293H221.266C232.33 87.5721 243.479 85.5589 254.663 83.8038C258.392 83.2188 262.131 82.6453 265.882 82.0832H265.985C272.988 81.6186 280.026 80.3625 286.994 79.5366C347.624 73.2301 408.614 71.0801 469.538 73.1014C499.115 73.9618 528.676 75.6996 558.116 78.6935C564.448 79.3474 570.746 80.0357 577.043 80.8099C579.452 81.1025 581.878 81.4465 584.305 81.7391L589.191 82.4445C603.438 84.5667 617.61 87.1419 631.708 90.1703C652.597 94.7128 679.422 96.1925 688.713 119.077C691.673 126.338 693.015 134.408 694.649 142.03L696.732 151.752C696.786 151.926 696.826 152.105 696.852 152.285C701.773 175.227 706.7 198.169 711.632 221.111C711.994 222.806 712.002 224.557 711.657 226.255C711.312 227.954 710.621 229.562 709.626 230.982C708.632 232.401 707.355 233.6 705.877 234.504C704.398 235.408 702.75 235.997 701.033 236.236H700.895L697.884 236.649L694.908 237.044C685.478 238.272 676.038 239.419 666.586 240.486C647.968 242.608 629.322 244.443 610.648 245.992C573.539 249.077 536.356 251.102 499.098 252.066C480.114 252.57 461.135 252.806 442.162 252.771C366.643 252.712 291.189 248.322 216.173 239.625C208.051 238.662 199.93 237.629 191.808 236.58C198.106 237.389 187.231 235.96 185.029 235.651C179.867 234.928 174.705 234.177 169.543 233.397C152.216 230.798 134.993 227.598 117.7 224.793C96.7944 221.352 76.8005 223.073 57.8906 233.397C42.3685 241.891 29.8055 254.916 21.8776 270.735C13.7217 287.597 11.2956 305.956 7.64786 324.075C4.00009 342.193 -1.67805 361.688 0.472751 380.288C5.10128 420.431 33.165 453.054 73.5313 460.35C111.506 467.232 149.687 472.807 187.971 477.556C338.361 495.975 490.294 498.178 641.155 484.129C653.44 482.982 665.708 481.732 677.959 480.378C681.786 479.958 685.658 480.398 689.292 481.668C692.926 482.938 696.23 485.005 698.962 487.717C701.694 490.429 703.784 493.718 705.08 497.342C706.377 500.967 706.846 504.836 706.453 508.665L702.633 545.797C694.936 620.828 687.239 695.854 679.542 770.874C671.513 849.657 663.431 928.434 655.298 1007.2C653.004 1029.39 650.71 1051.57 648.416 1073.74C646.213 1095.58 645.904 1118.1 641.757 1139.68C635.218 1173.61 612.248 1194.45 578.73 1202.07C548.022 1209.06 516.652 1212.73 485.161 1213.01C450.249 1213.2 415.355 1211.65 380.443 1211.84C343.173 1212.05 297.525 1208.61 268.756 1180.87C243.479 1156.51 239.986 1118.36 236.545 1085.37C231.957 1041.7 227.409 998.039 222.9 954.381L197.607 711.615L181.244 554.538C180.968 551.94 180.693 549.376 180.435 546.76C178.473 528.023 165.207 509.681 144.301 510.627C126.407 511.418 106.069 526.629 108.168 546.76L120.298 663.214L145.385 904.104C152.532 972.528 159.661 1040.96 166.773 1109.41C168.15 1122.52 169.44 1135.67 170.885 1148.78C178.749 1220.43 233.465 1259.04 301.224 1269.91C340.799 1276.28 381.337 1277.59 421.497 1278.24C472.979 1279.07 524.977 1281.05 575.615 1271.72C650.653 1257.95 706.952 1207.85 714.987 1130.13C717.282 1107.69 719.576 1085.25 721.87 1062.8C729.498 988.559 737.115 914.313 744.72 840.061L769.601 597.451L781.009 486.263C781.577 480.749 783.905 475.565 787.649 471.478C791.392 467.391 796.352 464.617 801.794 463.567C823.25 459.386 843.761 452.245 859.023 435.916C883.318 409.918 888.153 376.021 879.567 341.849ZM72.4301 365.835C72.757 365.68 72.1548 368.484 71.8967 369.792C71.8451 367.813 71.9483 366.058 72.4301 365.835ZM74.5121 381.94C74.6842 381.819 75.2003 382.508 75.7337 383.334C74.925 382.576 74.4089 382.009 74.4949 381.94H74.5121ZM76.5597 384.641C77.2996 385.897 77.6953 386.689 76.5597 384.641V384.641ZM80.672 387.979H80.7752C80.7752 388.1 80.9645 388.22 81.0333 388.341C80.9192 388.208 80.7925 388.087 80.6548 387.979H80.672ZM800.796 382.989C793.088 390.319 781.473 393.726 769.996 395.43C641.292 414.529 510.713 424.199 380.597 419.932C287.476 416.749 195.336 406.407 103.144 393.382C94.1102 392.109 84.3197 390.457 78.1082 383.798C66.4078 371.237 72.1548 345.944 75.2003 330.768C77.9878 316.865 83.3218 298.334 99.8572 296.355C125.667 293.327 155.64 304.218 181.175 308.09C211.917 312.781 242.774 316.538 273.745 319.36C405.925 331.405 540.325 329.529 671.92 311.91C695.906 308.686 719.805 304.941 743.619 300.674C764.835 296.871 788.356 289.731 801.175 311.703C809.967 326.673 811.137 346.701 809.778 363.615C809.359 370.984 806.139 377.915 800.779 382.989H800.796Z"></path>
</svg>
Buy me a coffee
</a>
<a href="https://github.com/dreeveapp/dreeve"
class="hidden sm:inline-flex btn-nav btn-nav-dark">
<svg class="size-4" fill="currentColor" viewBox="0 0 24 24"><path d="M12 .5a11.5 11.5 0 0 0-3.64 22.41c.58.1.79-.25.79-.56v-2c-3.2.7-3.88-1.55-3.88-1.55-.52-1.34-1.28-1.7-1.28-1.7-1.05-.71.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.7 1.26 3.36.96.1-.75.4-1.26.73-1.55-2.56-.29-5.25-1.28-5.25-5.7 0-1.26.45-2.3 1.18-3.11-.12-.29-.51-1.46.11-3.04 0 0 .97-.31 3.18 1.19a11 11 0 0 1 5.8 0c2.2-1.5 3.18-1.19 3.18-1.19.62 1.58.23 2.75.11 3.04.74.81 1.18 1.85 1.18 3.11 0 4.44-2.69 5.4-5.26 5.69.41.35.78 1.05.78 2.12v3.14c0 .31.21.67.8.56A11.5 11.5 0 0 0 12 .5z"/></svg>
GitHub
</a>
<label for="menu-toggle" aria-label="Toggle menu" class="md:hidden relative inline-flex items-center justify-center size-9 rounded-md border border-gray-300 text-gray-700 hover:bg-gray-50 cursor-pointer select-none">
<svg class="menu-toggle-icon menu-toggle-icon--open" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/></svg>
<svg class="menu-toggle-icon menu-toggle-icon--close" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/></svg>
</label>
</div>
</nav>
<div class="hidden max-md:peer-checked:block border-t border-gray-200 bg-white">
<div class="max-w-6xl mx-auto px-4 py-3 flex flex-col text-sm">
<a href="#features" class="mobile-nav-link">Features</a>
<a href="#install" class="mobile-nav-link">Install</a>
<a href="https://docs.dreeve.app" class="mobile-nav-link">Docs</a>
<a href="https://github.com/dreeveapp/dreeve" class="mobile-nav-link">GitHub</a>
<a href="https://www.buymeacoffee.com/ingelbrecht" target="_blank" rel="noopener"
class="mt-2 inline-flex btn-nav btn-coffee">
<svg class="h-4" viewBox="0 0 884 1279" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M472.623 590.836C426.682 610.503 374.546 632.802 306.976 632.802C278.71 632.746 250.58 628.868 223.353 621.274L270.086 1101.08C271.74 1121.13 280.876 1139.83 295.679 1153.46C310.482 1167.09 329.87 1174.65 349.992 1174.65C349.992 1174.65 416.254 1178.09 438.365 1178.09C462.161 1178.09 533.516 1174.65 533.516 1174.65C553.636 1174.65 573.019 1167.08 587.819 1153.45C602.619 1139.82 611.752 1121.13 613.406 1101.08L663.459 570.876C641.091 563.237 618.516 558.161 593.068 558.161C549.054 558.144 513.591 573.303 472.623 590.836Z" fill="currentColor"></path><path fill="currentColor" class="group-hover/menu-item:fill-gray-900" d="M879.567 341.849L872.53 306.352C866.215 274.503 851.882 244.409 819.19 232.898C808.711 229.215 796.821 227.633 788.786 220.01C780.751 212.388 778.376 200.55 776.518 189.572C773.076 169.423 769.842 149.257 766.314 129.143C763.269 111.85 760.86 92.4243 752.928 76.56C742.604 55.2584 721.182 42.8009 699.88 34.559C688.965 30.4844 677.826 27.0375 666.517 24.2352C613.297 10.1947 557.342 5.03277 502.591 2.09047C436.875 -1.53577 370.983 -0.443234 305.422 5.35968C256.625 9.79894 205.229 15.1674 158.858 32.0469C141.91 38.224 124.445 45.6399 111.558 58.7341C95.7448 74.8221 90.5829 99.7026 102.128 119.765C110.336 134.012 124.239 144.078 138.985 150.737C158.192 159.317 178.251 165.846 198.829 170.215C256.126 182.879 315.471 187.851 374.007 189.968C438.887 192.586 503.87 190.464 568.44 183.618C584.408 181.863 600.347 179.758 616.257 177.304C634.995 174.43 647.022 149.928 641.499 132.859C634.891 112.453 617.134 104.538 597.055 107.618C594.095 108.082 591.153 108.512 588.193 108.942L586.06 109.252C579.257 110.113 572.455 110.915 565.653 111.661C551.601 113.175 537.515 114.414 523.394 115.378C491.768 117.58 460.057 118.595 428.363 118.647C397.219 118.647 366.058 117.769 334.983 115.722C320.805 114.793 306.661 113.611 292.552 112.177C286.134 111.506 279.733 110.801 273.333 110.009L267.241 109.235L265.917 109.046L259.602 108.134C246.697 106.189 233.792 103.953 221.025 101.251C219.737 100.965 218.584 100.249 217.758 99.2193C216.932 98.1901 216.482 96.9099 216.482 95.5903C216.482 94.2706 216.932 92.9904 217.758 91.9612C218.584 90.9319 219.737 90.2152 221.025 89.9293H221.266C232.33 87.5721 243.479 85.5589 254.663 83.8038C258.392 83.2188 262.131 82.6453 265.882 82.0832H265.985C272.988 81.6186 280.026 80.3625 286.994 79.5366C347.624 73.2301 408.614 71.0801 469.538 73.1014C499.115 73.9618 528.676 75.6996 558.116 78.6935C564.448 79.3474 570.746 80.0357 577.043 80.8099C579.452 81.1025 581.878 81.4465 584.305 81.7391L589.191 82.4445C603.438 84.5667 617.61 87.1419 631.708 90.1703C652.597 94.7128 679.422 96.1925 688.713 119.077C691.673 126.338 693.015 134.408 694.649 142.03L696.732 151.752C696.786 151.926 696.826 152.105 696.852 152.285C701.773 175.227 706.7 198.169 711.632 221.111C711.994 222.806 712.002 224.557 711.657 226.255C711.312 227.954 710.621 229.562 709.626 230.982C708.632 232.401 707.355 233.6 705.877 234.504C704.398 235.408 702.75 235.997 701.033 236.236H700.895L697.884 236.649L694.908 237.044C685.478 238.272 676.038 239.419 666.586 240.486C647.968 242.608 629.322 244.443 610.648 245.992C573.539 249.077 536.356 251.102 499.098 252.066C480.114 252.57 461.135 252.806 442.162 252.771C366.643 252.712 291.189 248.322 216.173 239.625C208.051 238.662 199.93 237.629 191.808 236.58C198.106 237.389 187.231 235.96 185.029 235.651C179.867 234.928 174.705 234.177 169.543 233.397C152.216 230.798 134.993 227.598 117.7 224.793C96.7944 221.352 76.8005 223.073 57.8906 233.397C42.3685 241.891 29.8055 254.916 21.8776 270.735C13.7217 287.597 11.2956 305.956 7.64786 324.075C4.00009 342.193 -1.67805 361.688 0.472751 380.288C5.10128 420.431 33.165 453.054 73.5313 460.35C111.506 467.232 149.687 472.807 187.971 477.556C338.361 495.975 490.294 498.178 641.155 484.129C653.44 482.982 665.708 481.732 677.959 480.378C681.786 479.958 685.658 480.398 689.292 481.668C692.926 482.938 696.23 485.005 698.962 487.717C701.694 490.429 703.784 493.718 705.08 497.342C706.377 500.967 706.846 504.836 706.453 508.665L702.633 545.797C694.936 620.828 687.239 695.854 679.542 770.874C671.513 849.657 663.431 928.434 655.298 1007.2C653.004 1029.39 650.71 1051.57 648.416 1073.74C646.213 1095.58 645.904 1118.1 641.757 1139.68C635.218 1173.61 612.248 1194.45 578.73 1202.07C548.022 1209.06 516.652 1212.73 485.161 1213.01C450.249 1213.2 415.355 1211.65 380.443 1211.84C343.173 1212.05 297.525 1208.61 268.756 1180.87C243.479 1156.51 239.986 1118.36 236.545 1085.37C231.957 1041.7 227.409 998.039 222.9 954.381L197.607 711.615L181.244 554.538C180.968 551.94 180.693 549.376 180.435 546.76C178.473 528.023 165.207 509.681 144.301 510.627C126.407 511.418 106.069 526.629 108.168 546.76L120.298 663.214L145.385 904.104C152.532 972.528 159.661 1040.96 166.773 1109.41C168.15 1122.52 169.44 1135.67 170.885 1148.78C178.749 1220.43 233.465 1259.04 301.224 1269.91C340.799 1276.28 381.337 1277.59 421.497 1278.24C472.979 1279.07 524.977 1281.05 575.615 1271.72C650.653 1257.95 706.952 1207.85 714.987 1130.13C717.282 1107.69 719.576 1085.25 721.87 1062.8C729.498 988.559 737.115 914.313 744.72 840.061L769.601 597.451L781.009 486.263C781.577 480.749 783.905 475.565 787.649 471.478C791.392 467.391 796.352 464.617 801.794 463.567C823.25 459.386 843.761 452.245 859.023 435.916C883.318 409.918 888.153 376.021 879.567 341.849ZM72.4301 365.835C72.757 365.68 72.1548 368.484 71.8967 369.792C71.8451 367.813 71.9483 366.058 72.4301 365.835ZM74.5121 381.94C74.6842 381.819 75.2003 382.508 75.7337 383.334C74.925 382.576 74.4089 382.009 74.4949 381.94H74.5121ZM76.5597 384.641C77.2996 385.897 77.6953 386.689 76.5597 384.641V384.641ZM80.672 387.979H80.7752C80.7752 388.1 80.9645 388.22 81.0333 388.341C80.9192 388.208 80.7925 388.087 80.6548 387.979H80.672ZM800.796 382.989C793.088 390.319 781.473 393.726 769.996 395.43C641.292 414.529 510.713 424.199 380.597 419.932C287.476 416.749 195.336 406.407 103.144 393.382C94.1102 392.109 84.3197 390.457 78.1082 383.798C66.4078 371.237 72.1548 345.944 75.2003 330.768C77.9878 316.865 83.3218 298.334 99.8572 296.355C125.667 293.327 155.64 304.218 181.175 308.09C211.917 312.781 242.774 316.538 273.745 319.36C405.925 331.405 540.325 329.529 671.92 311.91C695.906 308.686 719.805 304.941 743.619 300.674C764.835 296.871 788.356 289.731 801.175 311.703C809.967 326.673 811.137 346.701 809.778 363.615C809.359 370.984 806.139 377.915 800.779 382.989H800.796Z"></path></svg>
Buy me a coffee
</a>
<a href="https://github.com/dreeveapp/dreeve"
class="mt-2 inline-flex btn-nav btn-nav-dark">
<svg class="size-4" fill="currentColor" viewBox="0 0 24 24"><path d="M12 .5a11.5 11.5 0 0 0-3.64 22.41c.58.1.79-.25.79-.56v-2c-3.2.7-3.88-1.55-3.88-1.55-.52-1.34-1.28-1.7-1.28-1.7-1.05-.71.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.7 1.26 3.36.96.1-.75.4-1.26.73-1.55-2.56-.29-5.25-1.28-5.25-5.7 0-1.26.45-2.3 1.18-3.11-.12-.29-.51-1.46.11-3.04 0 0 .97-.31 3.18 1.19a11 11 0 0 1 5.8 0c2.2-1.5 3.18-1.19 3.18-1.19.62 1.58.23 2.75.11 3.04.74.81 1.18 1.85 1.18 3.11 0 4.44-2.69 5.4-5.26 5.69.41.35.78 1.05.78 2.12v3.14c0 .31.21.67.8.56A11.5 11.5 0 0 0 12 .5z"/></svg>
GitHub
</a>
</div>
</div>
</header>
<section class="bg-white max-w-6xl mx-auto px-4 sm:px-5 pt-10 pb-14 md:pt-14 md:pb-20">
<div class="max-w-3xl mx-auto text-center">
<span class="eyebrow">
Open source
<span class="size-0.5 rounded-full bg-strava-orange"></span>
Self-hosted
<span class="size-0.5 rounded-full bg-strava-orange"></span>
Free forever
</span>
<h1 class="mt-4 text-[1.75rem] sm:text-3xl md:text-4xl font-black text-gray-900 leading-[1.1] tracking-tight max-w-4xl mx-auto">
Every ride. Every run. Every workout.<br/>
All <span class="text-strava-orange">yours</span>.
</h1>
<p class="mt-4 sm:mt-5 text-base md:text-lg text-gray-600 max-w-2xl mx-auto">
A self-hosted dashboard for your sports and fitness data. Dreeve turns every workout into beautiful
charts, deep insights and stats without handing anything over to a third party.
</p>
<p class="mt-2.5 text-xs text-gray-400 tracking-wide">Formerly known as Statistics for Strava</p>
<div class="mt-6 sm:mt-7 flex flex-wrap items-center justify-center gap-3">
<a href="https://docs.dreeve.app" class="btn btn-primary group">
Get started
<svg class="size-4 transition-transform duration-200 group-hover:translate-x-1" fill="none" stroke="currentColor" stroke-width="2.2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14M13 5l7 7-7 7"/></svg>
</a>
<a href="https://demo.dreeve.app" target="_blank" rel="noopener" class="btn btn-outline">
Try the live demo
<svg class="size-3.5 text-gray-400" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M10 6H6a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4M14 4h6m0 0v6m0-6L10 14"/></svg>
</a>
</div>
</div>
<div class="relative z-10 mt-12 md:mt-16">
<div class="window">
<div class="window-bar">
<div class="window-dots">
<span></span>
<span></span>
<span></span>
</div>
<div class="window-url">
<svg class="size-3" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 15v2m-6 4h12a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2Zm10-10V7a4 4 0 0 0-8 0v4h8Z"/></svg>
demo.dreeve.app
</div>
<div class="flex gap-1.5 opacity-0"><span class="size-2.5"></span></div>
</div>
<img src="assets/dashboard.webp" alt="Dreeve dashboard" class="block w-full h-auto"/>
</div>
</div>
</section>
<section id="features" class="max-w-6xl mx-auto px-4 sm:px-5 py-14 md:py-20">
<div class="max-w-2xl">
<h2 class="section-title">Built for athletes who like the details.</h2>
<p class="mt-3 text-gray-600">From a high-level dashboard down to per-segment splits, and everything in between.</p>
</div>
<div class="mt-10 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M9.143 4H4.857A.857.857 0 0 0 4 4.857v4.286c0 .473.384.857.857.857h4.286A.857.857 0 0 0 10 9.143V4.857A.857.857 0 0 0 9.143 4Zm10 0h-4.286a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286A.857.857 0 0 0 20 9.143V4.857A.857.857 0 0 0 19.143 4Zm-10 10H4.857a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286a.857.857 0 0 0 .857-.857v-4.286A.857.857 0 0 0 9.143 14Zm10 0h-4.286a.857.857 0 0 0-.857.857v4.286c0 .473.384.857.857.857h4.286a.857.857 0 0 0 .857-.857v-4.286a.857.857 0 0 0-.857-.857Z"/></svg>
</div>
<button type="button" data-preview-title="Dashboard" data-preview-src="assets/dashboard.webp" class="feature-card__hit" aria-label="Open Dashboard preview"></button>
<h3 class="font-bold text-gray-900">Dashboard</h3>
<p class="mt-1 text-sm text-gray-600">Every stat, chart and trend at a glance.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" fill="currentColor" viewBox="0 0 256 256"><g stroke-width="0"></g><g stroke-linecap="round" stroke-linejoin="round"></g><g><path d="M217.45557,38.544a35.9967,35.9967,0,0,0-57.937,40.96679L79.5105,159.51855a36.05906,36.05906,0,0,0-40.96607,7.0254H38.544a36.00029,36.00029,0,1,0,57.93737,9.94531L176.4895,96.48145A35.99663,35.99663,0,0,0,217.45557,38.544ZM72.48584,200.48535a12.00027,12.00027,0,0,1-16.97119-16.9707h-.00049a12.00044,12.00044,0,0,1,16.97168,16.9707Zm128-128a12.01673,12.01673,0,0,1-16.969.00244l-.0022-.00244a12.0001,12.0001,0,1,1,16.97119,0Z"></path></g></svg>
</div>
<button type="button" data-preview-title="Segments & efforts" data-preview-src="assets/segments.webp" class="feature-card__hit" aria-label="Open Segments & efforts preview"></button>
<h3 class="font-bold text-gray-900">Segments & efforts</h3>
<p class="mt-1 text-sm text-gray-600">Dive into your segment history, KOMs and personal bests with rich filtering.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" viewBox="0 0 24 24" fill="none"><g stroke-width="0"></g><g stroke-linecap="round" stroke-linejoin="round"></g><g><path d="M3 8.70938C3 7.23584 3 6.49907 3.39264 6.06935C3.53204 5.91678 3.70147 5.79466 3.89029 5.71066C4.42213 5.47406 5.12109 5.70705 6.51901 6.17302C7.58626 6.52877 8.11989 6.70665 8.6591 6.68823C8.85714 6.68147 9.05401 6.65511 9.24685 6.60952C9.77191 6.48541 10.2399 6.1734 11.176 5.54937L12.5583 4.62778C13.7574 3.82843 14.3569 3.42876 15.0451 3.3366C15.7333 3.24444 16.4168 3.47229 17.7839 3.92799L18.9487 4.31624C19.9387 4.64625 20.4337 4.81126 20.7169 5.20409C21 5.59692 21 6.11871 21 7.16229V15.2907C21 16.7642 21 17.501 20.6074 17.9307C20.468 18.0833 20.2985 18.2054 20.1097 18.2894C19.5779 18.526 18.8789 18.293 17.481 17.827C16.4137 17.4713 15.8801 17.2934 15.3409 17.3118C15.1429 17.3186 14.946 17.3449 14.7532 17.3905C14.2281 17.5146 13.7601 17.8266 12.824 18.4507L11.4417 19.3722C10.2426 20.1716 9.64311 20.5713 8.95493 20.6634C8.26674 20.7556 7.58319 20.5277 6.21609 20.072L5.05132 19.6838C4.06129 19.3538 3.56627 19.1888 3.28314 18.7959C3 18.4031 3 17.8813 3 16.8377V8.70938Z" stroke="currentColor" stroke-width="2"></path><path d="M9 6.63867V20.5" stroke="currentColor" stroke-width="2"></path><path d="M15 3V17" stroke="currentColor" stroke-width="2"></path></g></svg>
</div>
<button type="button" data-preview-title="Heatmap" data-preview-src="assets/heatmap.webp" class="feature-card__hit" aria-label="Open Heatmap preview"></button>
<h3 class="font-bold text-gray-900">Heatmap</h3>
<p class="mt-1 text-sm text-gray-600">A world map of every kilometre you've ever covered, anywhere you've been.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" viewBox="0 0 24 24"><path fill="currentColor" d="M21,4H18V3a1,1,0,0,0-1-1H7A1,1,0,0,0,6,3V4H3A1,1,0,0,0,2,5V8a4,4,0,0,0,4,4H7.54A6,6,0,0,0,11,13.91V16H10a3,3,0,0,0-3,3v2a1,1,0,0,0,1,1h8a1,1,0,0,0,1-1V19a3,3,0,0,0-3-3H13V13.91A6,6,0,0,0,16.46,12H18a4,4,0,0,0,4-4V5A1,1,0,0,0,21,4ZM6,10A2,2,0,0,1,4,8V6H6V8a6,6,0,0,0,.35,2Zm8,8a1,1,0,0,1,1,1v1H9V19a1,1,0,0,1,1-1ZM16,8A4,4,0,0,1,8,8V4h8Zm4,0a2,2,0,0,1-2,2h-.35A6,6,0,0,0,18,8V6h2Z"></path></svg>
</div>
<button type="button" data-preview-title="Best efforts" data-preview-src="assets/best-efforts.webp" class="feature-card__hit" aria-label="Open Best efforts preview"></button>
<h3 class="font-bold text-gray-900">Best efforts</h3>
<p class="mt-1 text-sm text-gray-600">Your fastest 5k, 10k, 50k, 100k and beyond across every sport you do.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" fill="currentColor" viewBox="0 -960 960 960"><path d="M80-200v-80h240v-240h240v-240h320v80H640v240H400v240H80Z"/></svg>
</div>
<button type="button" data-preview-title="Milestones & rewind" data-preview-src="assets/milestones.webp" class="feature-card__hit" aria-label="Open Milestones & rewind preview"></button>
<h3 class="font-bold text-gray-900">Milestones & rewind</h3>
<p class="mt-1 text-sm text-gray-600">A timeline of your achievements, plus a yearly Rewind to look back on it all.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 0 1 2-2h.93a2 2 0 0 0 1.664-.89l.812-1.22A2 2 0 0 1 10.07 4h3.86a2 2 0 0 1 1.664.89l.812 1.22A2 2 0 0 0 18.07 7H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9Z"/><path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"/></svg>
</div>
<button type="button" data-preview-title="Photos" data-preview-src="assets/photos.webp" class="feature-card__hit" aria-label="Open Photos preview"></button>
<h3 class="font-bold text-gray-900">Photos</h3>
<p class="mt-1 text-sm text-gray-600">Browse all your activity photos in one place, organised by workout and date.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M4 10h16m-8-3V4M7 7V4m10 3V4M5 20h14a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1Z"/></svg>
</div>
<button type="button" data-preview-title="Monthly view" data-preview-src="assets/monthly.webp" class="feature-card__hit" aria-label="Open Monthly view preview"></button>
<h3 class="font-bold text-gray-900">Monthly view</h3>
<p class="mt-1 text-sm text-gray-600">Interactive calendar with month-by-month totals, sport breakdowns and trends.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" aria-hidden="true" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path></svg>
</div>
<button type="button" data-preview-title="Gear & maintenance" data-preview-src="assets/gear.webp" class="feature-card__hit" aria-label="Open Gear & maintenance preview"></button>
<h3 class="font-bold text-gray-900">Gear & maintenance</h3>
<p class="mt-1 text-sm text-gray-600">Track wear on every bike, shoe and component. Get reminded when service is due.</p>
</div>
<div class="feature-card group">
<div class="feature-card__icon">
<svg class="size-5" aria-hidden="true" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 17h6l3 3v-3h2V9h-2M4 4h11v8H9l-3 3v-3H4V4Z"></path></svg>
</div>
<button type="button" data-preview-title="AI workout assistant" data-preview-src="assets/assistant.webp" class="feature-card__hit" aria-label="Open AI workout assistant preview"></button>
<h3 class="font-bold text-gray-900">AI workout assistant</h3>
<p class="mt-1 text-sm text-gray-600">Personalised workout suggestions and insights powered by your own data.</p>
</div>
</div>
<dialog id="feature-preview" aria-labelledby="feature-preview-title" class="preview-dialog">
<div class="window-bar">
<div class="window-dots shrink-0">
<span></span>
<span></span>
<span></span>
</div>
<h3 id="feature-preview-title" data-preview-title-target class="sr-only"></h3>
<div class="window-url">
<svg class="size-3 shrink-0" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 15v2m-6 4h12a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2Zm10-10V7a4 4 0 0 0-8 0v4h8Z"/></svg>
<span class="truncate">demo.dreeve.app</span>
</div>
<button type="button" data-close-preview aria-label="Close preview">
<svg class="size-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/></svg>
</button>
</div>
<img data-preview-image-target src="" alt="" class="block w-full h-auto"/>
</dialog>
</section>
<section id="preview" class="bg-gray-50 border-y border-gray-200">
<div class="max-w-6xl mx-auto px-4 sm:px-5 py-14 md:py-20">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-10 lg:gap-12 items-center">
<div>
<h2 class="section-title">A few practical things.</h2>
<ul class="mt-6 space-y-3 text-sm">
<li class="flex items-start gap-3">
<span class="check-badge">
<svg class="size-3" fill="none" stroke="currentColor" stroke-width="3" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m5 12 5 5L20 7"/></svg>
</span>
<span><span class="font-semibold text-gray-900">All your sports.</span> Ride, run, swim, hike, ski. Even Zwift worlds get their own breakdown.</span>
</li>
<li class="flex items-start gap-3">
<span class="check-badge">
<svg class="size-3" fill="none" stroke="currentColor" stroke-width="3" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m5 12 5 5L20 7"/></svg>
</span>
<span><span class="font-semibold text-gray-900">Light & dark theme.</span> Picks your system preference and remembers it.</span>
</li>
<li class="flex items-start gap-3">
<span class="check-badge">
<svg class="size-3" fill="none" stroke="currentColor" stroke-width="3" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m5 12 5 5L20 7"/></svg>
</span>
<span><span class="font-semibold text-gray-900">Translated.</span> English, Nederlands, Deutsch, Français, Italiano, Português and more.</span>
</li>
<li class="flex items-start gap-3">
<span class="check-badge">
<svg class="size-3" fill="none" stroke="currentColor" stroke-width="3" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m5 12 5 5L20 7"/></svg>
</span>
<span><span class="font-semibold text-gray-900">Mobile-ready.</span> Install as a PWA and use it like a native app.</span>
</li>
</ul>
<p class="mt-6 inline-flex items-center gap-1.5 text-xxs font-semibold text-gray-400">
<svg class="size-3.5 text-strava-orange" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M9 7l-4 5 4 5M15 7l4 5-4 5"/></svg>
Drag the slider to compare light & dark
</p>
</div>
<div class="relative w-full aspect-[6/5] rounded-lg border border-gray-200 overflow-hidden shadow-xl select-none" style="--pos: 50%">
<img src="assets/dark-mode.webp?" alt="dark mode" class="absolute inset-0 w-full h-full object-cover pointer-events-none"/>
<img src="assets/light-mode.webp?" alt="light mode" class="absolute inset-0 w-full h-full object-cover pointer-events-none" style="clip-path: inset(0 calc(100% - var(--pos)) 0 0)"/>
<div class="absolute inset-y-0 w-0.5 bg-white pointer-events-none shadow-[0_0_0_1px_rgba(0,0,0,0.08)]" style="left: var(--pos); transform: translateX(-50%)">
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 size-9 rounded-full bg-white shadow-md flex items-center justify-center">
<svg class="size-4 text-gray-700" fill="none" stroke="currentColor" stroke-width="2.2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M9 7l-4 5 4 5M15 7l4 5-4 5"/></svg>
</div>
</div>
<input type="range" min="0" max="100" value="50" step="0.1" aria-label="Drag to compare light and dark mode" class="absolute inset-0 w-full h-full opacity-0 cursor-ew-resize" oninput="this.parentElement.style.setProperty('--pos', this.value + '%')"/>
</div>
</div>
</div>
</section>
<section id="install" class="max-w-6xl mx-auto px-4 sm:px-5 py-14 md:py-20">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-10 lg:gap-12 items-center">
<div>
<h2 class="section-title">Run it with Docker.</h2>
<p class="mt-3 text-gray-600 max-w-md">If you can run a Docker container, you can run Dreeve. Connect your account, hit go, and watch your years of data sync.</p>
<div class="mt-6 flex flex-wrap items-center gap-3">
<a href="https://docs.dreeve.app" class="btn btn-primary group">
Read the docs
<svg class="size-4 transition-transform duration-200 group-hover:translate-x-1" fill="none" stroke="currentColor" stroke-width="2.2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14M13 5l7 7-7 7"/></svg>
</a>
<a href="https://hub.docker.com/r/robiningelbrecht/dreeve" class="btn btn-outline-muted">
<svg class="size-4" fill="currentColor" viewBox="0 0 24 24"><path d="M22 11.27a3.6 3.6 0 0 0-2-1.07c-.6-1.1-1.85-1.7-3.05-1.7l-.05.3c-.2 1.4.1 2.7 1 3.55-.45.25-1.2.5-2.15.5H1.85c-.5 2.6.95 5.95 4.05 7.2 2.5 1 5.45 1.05 8 .15 3.1-1.1 4.95-3.6 5.85-6.05.85.1 2.2-.1 2.7-1.7-.1-.05-.4-.15-.45-1.18zM6.6 11h-2v-2h2v2zm2.7 0h-2v-2h2v2zm2.7 0h-2v-2h2v2zm2.7 0h-2v-2h2v2zM9.3 8.3h-2v-2h2v2zm2.7 0h-2v-2h2v2zm2.7 0h-2v-2h2v2zM12 5.6h-2v-2h2v2z"/></svg>
Docker Hub
</a>
</div>
<p class="mt-3 text-xxs text-gray-500">
Also published to
<a href="https://github.com/dreeveapp/dreeve/pkgs/container/dreeve"
target="_blank" rel="noopener" class="font-semibold text-gray-700 hover:text-strava-orange transition inline-flex items-center gap-0.5">
GitHub Container Registry
<svg class="size-3" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M10 6H6a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4M14 4h6m0 0v6m0-6L10 14"/></svg>
</a>
</p>
</div>
<div>
<div class="rounded-xl overflow-hidden shadow-[0_30px_60px_-28px_rgba(17,24,39,0.55)]">
<div class="flex items-center gap-2.5 px-3.5 py-2.5 bg-[#1a1f27] border-b border-white/5">
<div class="window-dots">
<span></span>
<span></span>
<span></span>
</div>
<span class="text-[11px] font-semibold text-gray-500 font-mono">bash</span>
</div>
<div class="font-mono bg-[#212730] text-gray-200 px-4 py-3.5 text-[12px] sm:text-[13px] leading-[1.7] overflow-x-auto whitespace-pre"><span class="text-gray-500"># create a directory for the app</span>
$ <span class="text-orange-400">mkdir</span> dreeve && <span class="text-orange-400">cd</span> dreeve
<span class="text-gray-500"># drop in docker-compose.yml, and .env</span>
<span class="text-gray-500"># (copy the examples from the docs)</span>
<span class="text-gray-500"># spin it up</span>
$ <span class="text-orange-400">docker</span> compose up
<span class="text-gray-500"># open the dashboard</span>
<span class="text-orange-400">→</span> http://localhost:8080<span class="inline-block w-2 h-[1.05em] bg-[#f3915f] align-text-bottom ml-0.5 animate-pulse"></span></div>
</div>
<div class="mt-3 flex items-center justify-end text-xxs text-gray-500">
<a href="https://docs.dreeve.app/#/getting-started/installation" class="font-semibold text-strava-orange hover:underline">Full instructions →</a>
</div>
</div>
</div>
</section>
<section class="bg-gray-50 border-y border-gray-200">
<div class="max-w-4xl mx-auto px-4 sm:px-5 py-14 md:py-20 text-center">
<h2 class="section-title">Open to anyone.</h2>
<p class="mt-3 text-gray-600 max-w-2xl mx-auto">
Built by people who ride, run, swim, lift and do every other kind of workout out there. If you've got
ideas, bug reports, or just want to chat, GitHub and Discord are open.
</p>
<div class="mt-7 flex flex-wrap items-center justify-center gap-3">
<a href="https://github.com/dreeveapp/dreeve" class="btn btn-dark">
<svg class="size-4" fill="currentColor" viewBox="0 0 24 24"><path d="M12 .5a11.5 11.5 0 0 0-3.64 22.41c.58.1.79-.25.79-.56v-2c-3.2.7-3.88-1.55-3.88-1.55-.52-1.34-1.28-1.7-1.28-1.7-1.05-.71.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.7 1.26 3.36.96.1-.75.4-1.26.73-1.55-2.56-.29-5.25-1.28-5.25-5.7 0-1.26.45-2.3 1.18-3.11-.12-.29-.51-1.46.11-3.04 0 0 .97-.31 3.18 1.19a11 11 0 0 1 5.8 0c2.2-1.5 3.18-1.19 3.18-1.19.62 1.58.23 2.75.11 3.04.74.81 1.18 1.85 1.18 3.11 0 4.44-2.69 5.4-5.26 5.69.41.35.78 1.05.78 2.12v3.14c0 .31.21.67.8.56A11.5 11.5 0 0 0 12 .5z"/></svg>
GitHub
</a>
<a href="https://discord.gg/p4zpZyCHNc" class="btn btn-discord">
<svg class="size-4" fill="currentColor" viewBox="0 0 24 24"><path d="M18.942 5.556a16.3 16.3 0 0 0-4.126-1.3 12.04 12.04 0 0 0-.529 1.1 15.175 15.175 0 0 0-4.573 0 11.586 11.586 0 0 0-.535-1.1 16.274 16.274 0 0 0-4.129 1.3 17.392 17.392 0 0 0-2.868 11.662 15.785 15.785 0 0 0 4.963 2.521c.41-.564.773-1.16 1.084-1.785a10.638 10.638 0 0 1-1.706-.83c.143-.106.283-.217.418-.331a11.664 11.664 0 0 0 10.118 0c.137.114.277.225.418.331-.544.328-1.116.606-1.71.832a12.58 12.58 0 0 0 1.084 1.785 16.46 16.46 0 0 0 5.064-2.595 17.286 17.286 0 0 0-2.973-11.59ZM8.678 14.813a1.94 1.94 0 0 1-1.8-2.045 1.93 1.93 0 0 1 1.8-2.047 1.918 1.918 0 0 1 1.8 2.047 1.929 1.929 0 0 1-1.8 2.045Zm6.644 0a1.94 1.94 0 0 1-1.8-2.045 1.93 1.93 0 0 1 1.8-2.047 1.919 1.919 0 0 1 1.8 2.047 1.93 1.93 0 0 1-1.8 2.045Z"></path></svg>
Join Discord
</a>
</div>
</div>
</section>
<footer class="bg-gray-100 text-gray-600">
<div class="max-w-6xl mx-auto px-5 py-10 flex flex-col md:flex-row gap-6 items-start md:items-center justify-between">
<div class="flex items-center gap-3">
<img src="https://raw.githubusercontent.com/dreeveapp/dreeve/master/public/assets/images/logo.svg" alt="Dreeve logo" class="size-8"/>
<div>
<div class="text-gray-900 font-bold text-sm">Dreeve</div>
<div class="text-xxs text-gray-500">Self-hosted, open-source dashboard for your sports and fitness data.</div>
</div>
</div>
<div class="flex flex-wrap gap-x-6 gap-y-2 text-xs">
<a href="https://github.com/dreeveapp/dreeve" class="hover:text-gray-900">GitHub</a>
<a href="https://docs.dreeve.app" class="hover:text-gray-900">Documentation</a>
<a href="https://discord.gg/p4zpZyCHNc" class="hover:text-gray-900">Discord</a>
</div>
</div>
<div class="border-t border-gray-200">
<div class="max-w-6xl mx-auto px-5 py-4 text-xxs text-gray-500 flex items-center gap-1.5">
<span>Also by the same developer:</span>
<a href="https://windahead.app" target="_blank" rel="noopener" aria-label="Visit Windahead (opens in a new tab)"
class="inline-flex items-center gap-1 font-semibold text-gray-700 hover:text-strava-orange transition">
<img src="https://windahead.app/assets/logo.svg" alt="" class="size-3.5 rounded-sm"/>
Windahead ↗
</a>
</div>
</div>
</footer>
<script>
class FeatureDialog {
constructor(dialog, {
triggers = '[data-preview-src]',
titleTarget = '[data-preview-title-target]',
imageTarget = '[data-preview-image-target]',
closeTarget = '[data-close-preview]',
loadingSrc = 'assets/feature-loading.svg',
} = {}) {
this.dialog = typeof dialog === 'string' ? document.querySelector(dialog) : dialog;
this.supported = !!this.dialog && typeof this.dialog.showModal === 'function';
if (!this.supported) return;
this.titleEl = this.dialog.querySelector(titleTarget);
this.imageEl = this.dialog.querySelector(imageTarget);
this.loadingSrc = loadingSrc;
this.requestId = 0;
document.querySelectorAll(triggers).forEach((trigger) => {
trigger.addEventListener('click', () => this.open(trigger.dataset));
});
this.dialog.querySelectorAll(closeTarget).forEach((btn) => {
btn.addEventListener('click', () => this.close());
});
this.dialog.addEventListener('click', (e) => {
if (e.target === this.dialog) this.close();
});
}
open({ previewTitle = '', previewSrc = '' } = {}) {
if (!this.supported) return;
if (this.titleEl) this.titleEl.textContent = previewTitle;
if (this.imageEl) {
this.imageEl.alt = previewTitle ? `${previewTitle} preview` : '';
// Reset to the loading state immediately so the previously
// opened preview never flashes while the new image downloads.
this.imageEl.src = this.loadingSrc;
if (previewSrc) {
const requestId = ++this.requestId;
const preloader = new Image();
preloader.onload = () => {
// Ignore if another preview was opened in the meantime.
if (requestId === this.requestId) this.imageEl.src = previewSrc;
};
preloader.src = previewSrc;
}
}
this.dialog.showModal();
}
close() {
if (this.supported) this.dialog.close();
}
}
new FeatureDialog('#feature-preview');
</script>
</body>
</html>