Language: English | 中文
GarminReport turns your Garmin activity and health data into a polished annual report page. It is built for personal use with a privacy-first workflow and publication-ready visuals.
- Narrative annual dashboard (Overview, Sports, Health, Year-over-Year)
- Rich chart set plus 3D/2D contribution-style visualizations
- One-click print and PDF export
- Responsive layout for desktop and mobile
- Local-first data flow for better privacy control
Sports Analysis (Desktop):
- Configure env:
cp .env.example .env- Install dependencies:
python -m pip install -r requirements.txt- Fill credentials in
.env:
GARMIN_EMAIL=
GARMIN_PASSWORD=
GARMIN_CN=false- Pull Garmin data (at least two consecutive years for YoY comparison):
python fetch_garmin_data.py --years 2024,2025If only one year is pulled, previous-year comparison fields will be missing.
- Build yearly analysis:
python analyze_report_data.py --year 2025- Generate report page:
python generate_report.py --year 2025garmin_report_*/is ignored by default.- Secrets (
.env,*.pem,*.key,*.p12) are ignored. output/is ignored exceptoutput/screenshots/*.png(for README demos).
requirements.txt # Runtime dependencies
requirements-dev.txt # Dev/test dependencies
fetch_garmin_data.py # Pull raw Garmin data
analyze_report_data.py # Build yearly aggregated analysis
generate_report.py # Render final annual report HTML
templates/ # HTML/CSS/JS templates and assets
tests/ # Unit tests
output/screenshots/ # Demo screenshots tracked for README
python -m pip install -r requirements-dev.txt
python -m pytest tests -q