Turn your WakaTime stats into a profile-style activity heatmap.
- WakaTime yearly activity heatmap
- Automatic dark/light mode in
README.md - Profile-style layout with months, weekdays, and legend
- Fixed hour buckets for consistent colors
- GitHub Actions automation
- Local
.envsupport for testing - Lightweight setup with plain Python and SVG output
This project fetches your WakaTime daily data from GET /users/{id}/insights/days?range=last_year and renders two SVG files:
waka-heatmap.svgwaka-heatmap-dark.svg
The workflow automatically:
- loads your
WAKATIME_API_KEYfrom GitHub Secrets - fetches the last year of WakaTime daily activity
- generates light and dark SVG heatmaps
- commits the updated SVG files back to
main
- The generator uses WakaTime
GET /users/{id}/insights/days?range=last_year. - No paid WakaTime plan is required.
- The workflow only needs
WAKATIME_API_KEYbecause the script defaults tocurrentwhenWAKATIME_USERNAMEis not provided. - Generated files are committed directly to
main; this repo does not use a separateoutputbranch.
- Fork this repository.
- Add a repository secret named
WAKATIME_API_KEY. - Optionally set
WAKATIME_USERNAMElocally if you do not want to usecurrent. - Enable GitHub Actions.
- Run the
Update WakaTime Heatmapworkflow manually once, or wait for the daily schedule.
Quick start for Windows PowerShell:
.\run_local.ps1Manual alternative:
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python generate_waka_heatmap.pyYou can also copy .env.example to .env and set:
WAKATIME_API_KEY=your_api_key_here
WAKATIME_USERNAME=currentGitHub Actions runs the generator:
- on
workflow_dispatch - every 24 hours at
04:00UTC
The workflow tracks only the generated SVG outputs.