Product Introduction
Statistics for Strava is a self-hosted web application that generates advanced analytics and visualizations using data from Strava activities. It extends Strava's native statistics by offering deeper insights into training patterns, gear usage, and performance metrics through customizable dashboards. The tool operates as a Docker container solution that processes activity data locally, ensuring full control over personal information. It supports multiple languages and measurement systems while providing features unavailable in Strava's official platform.
The core value lies in empowering athletes and fitness enthusiasts with granular data analysis capabilities beyond basic Strava metrics. It addresses the limitations of Strava's built-in analytics by offering historical trend comparisons, gear maintenance tracking, and specialized metrics like Eddington numbers. The self-hosted nature ensures data privacy while enabling users to retain full ownership of their activity records and statistical models.
Main Features
The dashboard aggregates multi-sport statistics including distance totals, elevation profiles, and heart rate zone distributions across customizable timeframes. It features interactive charts for monthly activity calendars, gear usage timelines, and comparative analysis between different training periods. Users can filter data by sport type (cycling, running, swimming) and access detailed breakdowns of segment efforts.
Gear maintenance tracking enables users to monitor component wear through automated mileage calculations based on activity data. The system supports multiple gear profiles with configurable maintenance intervals, sending alerts when parts reach replacement thresholds. Maintenance history is visualized through timeline graphs and exportable logs, integrating directly with recorded activities.
Strava Rewind provides annual summaries with personalized highlights including top activities, challenge completions, and geographical heatmaps. This feature compiles yearly statistics into shareable formats while comparing performance metrics against previous years. It incorporates photo timelines from activities and recognizes personal achievements through a badge system tied to specific milestones.
Problems Solved
The tool resolves Strava's limited analytical depth by processing raw API data into advanced metrics like power-to-weight ratios, training stress scores, and relative intensity comparisons. It calculates specialized indices such as Eddington numbers (quantifying consistent distance achievements) that aren't natively supported by Strava. Users gain access to longitudinal data analysis spanning multiple years of training history.
Primary users include data-driven athletes, coaches analyzing client performance, and gear enthusiasts managing equipment lifecycle. Secondary users encompass privacy-conscious individuals who prefer local data storage over cloud-based analytics platforms. The solution particularly benefits multi-sport athletes requiring cross-disciplinary performance tracking.
Typical scenarios involve cyclists analyzing drivetrain wear across 10,000+ km of riding, runners tracking VO2 Max trends, and triathletes comparing swim/bike/run distributions. Coaches utilize the platform to monitor athlete progress through customizable metrics, while commuters employ heatmaps to visualize frequent routes. The gear maintenance module helps prevent equipment failures through predictive replacement alerts.
Unique Advantages
Unlike cloud-based Strava extensions, this solution offers complete data sovereignty through local hosting with Docker containerization. It surpasses generic fitness platforms by providing sport-specific analytics for cycling power metrics, running cadence patterns, and swimming stroke efficiency. The open-source AGPL-3.0 license enables customization unavailable in commercial alternatives.
Innovative implementations include dynamic heart rate zone calculations using multiple scientific formulas (Fox, Tanaka, Gellish) adjusted for athlete age. The system automatically syncs with Strava's API while implementing smart rate limiting to prevent service bans. Unique visualization layers combine heatmaps with elevation profiles and weather data overlays.
Competitive strengths include native support for Zwift integration badges, historical FTP tracking, and weight-based power calculations. The cron-based scheduling system allows automated daily imports without manual intervention, while the modular architecture permits selective data processing through activity filters and visibility settings. Privacy-focused design ensures all data remains within user-controlled infrastructure.
Frequently Asked Questions (FAQ)
How do I obtain the required Strava refresh token? Users must navigate to the initial setup page at http://localhost:8080/ after deployment, which provides step-by-step OAuth authentication instructions. The process involves logging into Strava through a generated link, granting API permissions, and copying the returned refresh token into the .env configuration file. This token enables ongoing data synchronization without storing Strava credentials locally.
Why is backing up Docker volumes critical before updates? Database schema changes between versions may require migration scripts that could potentially affect existing data. The /storage/database volume contains all activity records and user configurations, while /storage/files holds imported challenge histories. Regular backups prevent data loss during version upgrades or container recreation.
How can I import historical Strava challenges and trophies? Users must export their public Strava trophy case page source code to storage/files/strava-challenge-history.html while ensuring their profile visibility is set to public. The system parses this HTML during the next import cycle, extracting challenge completion dates and achievement metadata. English language format is required for successful parsing of the source file.