Goal Visualizer
Running analytics for Strava
What is Goal Visualizer?
Goal Visualizer is an analytics dashboard that helps runners track progress toward annual running goals. Connect your Strava account to see:
- Personal progress: Distance tracking toward your annual goal
- Club leaderboards: See how your running club is tracking together
- Interactive charts: Monthly and yearly progress visualizations
- Custom goals: Set your own annual mileage target
- Real-time syncing: Your latest Strava activities synced automatically every 24 hours
Why Goal Visualizer?
We believe analytics tools should be:
- Simple: No complicated setup or configuration
- Private: Your data is stored only on the app's server; it is not shared, sold, or used for advertising
- Honest: We tell you exactly what we store and why
- Deletable: Export or delete your data anytime after verifying your Strava identity
- Open: Source code available on GitHub for transparency
How It Works
- You authorize your Strava account via secure OAuth (web flow works on desktop and mobile browsers)
- Goal Visualizer fetches your Run activities
- Data is stored in a local SQLite database (OAuth tokens encrypted at rest)
- Accepted OAuth callback scopes are validated and stored for troubleshooting
- Dashboard generates your personalized analytics
- You can disconnect and delete anytime
ℹ️ No data is sold, shared with ads, or used for profit. Goal Visualizer is a hobby project maintained by an individual runner.
Technical Details
Built with:
- Python 3.11+ with Streamlit for the dashboard
- SQLite for local data storage
- Fernet encryption for OAuth token security
- Strava v3 API (activity:read_all, profile:read_all scopes)
- Short-lived token refresh with persisted token rotation
- Deployed on Fly.io (HTTPS enforced)