{"repo":"Aebel-Shajan/year-in-data","free":true,"listed":false,"github":"https://github.com/Aebel-Shajan/year-in-data","clone":"git clone https://github.com/Aebel-Shajan/year-in-data.git","description":"Made this to visualise what I did in 2024 through annual activity heatmaps.","language":"Jupyter Notebook","stars":108,"topics":["d3","data-visualization","pandas","python","react"],"license":"GPL-3.0","category":"productivity","readme_excerpt":"Year in Data Made this because I was too lazy to use habit tracker apps, instead using data collected about me by big companies. Personal activity heatmaps for GitHub contributions, Fitbit, Garmin, Kindle, Strong, Gym Group and macOS screen time, visualised as annual SVG heatmaps on a GitHub Pages site. The pipeline runs weekly via GitHub Actions, pulls raw exports from Cloudflare R2, processes them with Polars, and writes aggregated JSON back to R2. The React website fetches that JSON at runtime. Data sources Source How to get the data Frequency --- --- --- GitHub Fetched automatically via GraphQL API Automated Garmin Fetched automatically via garminconnect Python library Automated Gym Group Fetched automatically via Gym Group API Automated macOS screen time Collected automatically via local cron job ( make install-macos-cron ) Automated macOS shell history Collected automatically via local cron job Automated Fitbit Google Takeout → select Fitbit → download zip Manual Kindle Amazon data request → Reading Insights CSV Manual Strong Strong app → Settings → Export Data → CSV Manual Quick start Environment variables Variable Description --- --- R2 ENDPOINT URL Cloudflare R2 endpoint URL R2 ACCESS KEY ID R2 access key R2 SECRET ACCESS KEY R2 secret key CLOUDFLARE API TOKEN Cloudflare API token (for bucket setup) PIPELINE GITHUB TOKEN GitHub personal access token (for contributions) GARMIN USERNAME Garmin Connect email GARMIN PASSWORD Garmin Connect password GYM GROUP USERNAME Gym","default_branch":null,"files":null,"tree":[],"storefront":"/r/Aebel-Shajan","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Aebel-Shajan/year-in-data/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}