WakaTime coding metrics on your profile readme.
💬 Forum | GitHub discussions
Nope? Skip to #Prep work.
WakaTime gives you an idea of the time you spent on coding. This helps you boost your productivity and competitive edge (aka flex 💪).
- Head over to https://wakatime.com/ and create an account.
- After logging in get your WakaTime API Key from https://wakatime.com/api-key/.
- Install WakaTime plugin in your favorite editor / IDE.
- Paste in your API key to start telemetry.
ℹ️ Info | You can read WakaTime help to know more about configurations. Alternatively, you can fetch data from WakaTime compatible services such as Wakapi or Hakatime.
A GitHub repository and a README.md
file is required. We'll be making use of readme in the profile repository.
-
Save the
README.md
file after copy-pasting the following special comments. Your dev-metics will show up in between.<!--START_SECTION:waka--> <!--END_SECTION:waka-->
<!--START_SECTION: -->
and<!--END_SECTION: -->
are placeholders and must be retained as is. Whereas "waka
" can be replaced by any alphanumeric string. See #Tweaks section for more. -
Navigate to your repo's
Settings
:-
Go to
Secrets
(athttps://github.com/USERNAME/USERNAME/settings/secrets/actions/new
by replacing theUSERNAME
with your own username) and add a new secret "Named"WAKATIME_API_KEY
with your API key as it's "Secret".If you're not using profile repository, add another secret "Named"
GH_TOKEN
and in place of "Secret" insert your GitHub token. -
Go to
Workflow permissions
underActions
(athttps://github.com/USERNAME/USERNAME/settings/actions
by replacing theUSERNAME
with your own username) and setRead and write permissions
.
-
-
Create a new workflow file named
waka-readme.yml
inside.github/workflows/
folder of your repository. -
Clear all existing contents, add following lines and save the file.
name: Waka Readme on: # for manual workflow trigger workflow_dispatch: schedule: # runs at 12 AM UTC (5:30 AM IST) - cron: "0 0 * * *" jobs: update-readme: name: WakaReadme DevMetrics runs-on: ubuntu-latest steps: - uses: athul/waka-readme@master # this action name with: WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
Refer #Example section for a full blown workflow file.
There are many flags that you can modify as you see fit.
Environment flag Options ( Default
,Other
, ...)Description API_BASE_URL
https://wakatime.com/api
,https://wakapi.dev/api
,https://hakatime.mtx-dev.xyz/api
Use WakaTime compatible services like Wakapi & Hakatime REPOSITORY
<gh_username>/<gh_username>
,<gh_username>/<repo_name>
Waka-readme stats will appear on the provided repository Environment flag Options ( Default
,Other
, ...)Description SHOW_TITLE
false
,true
Add title to waka-readme stats blob SECTION_NAME
waka
, any alphanumeric stringThe generator will look for section name to fill up the readme. BLOCKS
░▒▓█
,⣀⣄⣤⣦⣶⣷⣿
,-#
,=>
, you can be creativeAscii art used to build stats graph CODE_LANG
txt
,python
ruby
json
, you can use other languages alsoLanguage syntax based highlighted text TIME_RANGE
last_7_days
,last_30_days
,last_6_months
,last_year
,all_time
String representing a dispensation from which stats are aggregated LANG_COUNT
5
, any plausible numberNumber of languages to be displayed SHOW_TIME
true
,false
Displays the amount of time spent for each language SHOW_TOTAL
false
,true
Show total coding time SHOW_MASKED_TIME
false
,true
Adds total coding time including unclassified languages (overrides: SHOW_TOTAL
)STOP_AT_OTHER
false
,true
Stop when language marked as Other
is retrieved (overrides:LANG_COUNT
)IGNORED_LANGUAGES
Binary YAML JSON TOML
Hide languages from your stats Environment flag Options ( Default
,Other
, ...)COMMIT_MESSAGE
Updated waka-readme graph with new metrics
, any reasonable messageTARGET_BRANCH
NOT_SET
, target branch nameTARGET_PATH
NOT_SET
,/path/to/target/file
COMMITTER_NAME
NOT_SET
, committer nameCOMMITTER_EMAIL
NOT_SET
, committer emailAUTHOR_NAME
NOT_SET
, author nameAUTHOR_EMAIL
NOT_SET
, author emailThe first option is the default value of the flag, subsequent options are valid values available for the flag.
waka-readme.yml
name: Waka Readme on: # for manual workflow trigger workflow_dispatch: schedule: # runs at 12 AM UTC (5:30 AM IST) - cron: "0 0 * * *" jobs: update-readme: name: WakaReadme DevMetrics runs-on: ubuntu-latest steps: # this action name - uses: athul/waka-readme@master # do NOT replace with anything else with: GH_TOKEN: ${{ secrets.GH_TOKEN }} # optional if on profile readme WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }} # required ### meta API_BASE_URL: https://wakatime.com/api # optional REPOSITORY: YOUR_GITHUB_USERNAME/YOUR_REPOSITORY_NAME # optional ### content SHOW_TITLE: true # optional SECTION_NAME: waka # optional BLOCKS: -> # optional CODE_LANG: rust # optional TIME_RANGE: all_time # optional LANG_COUNT: 10 # optional SHOW_TIME: true # optional SHOW_TOTAL: true # optional SHOW_MASKED_TIME: false # optional STOP_AT_OTHER: true # optional IGNORED_LANGUAGES: YAML JSON TOML # optional ### commit COMMIT_MESSAGE: Updated waka-readme graph with new metrics # optional TARGET_BRANCH: master # optional TARGET_PATH: README.md # optional COMMITTER_NAME: GitHubActionBot # optional COMMITTER_EMAIL: action-bot@github.com # optional AUTHOR_NAME: YOUR_NAME # optional AUTHOR_EMAIL: YOUR@EMAIL.com # optional # you can populate email-id with secrets instead
Rendered
markdown
:From: 10 July 2020 - To: 06 August 2022 Total Time: 1,464 hrs 54 mins Python 859 hrs 29 mins >>>>>>>>>>>>>>----------- 54.68 % Markdown 132 hrs 33 mins >>----------------------- 08.43 % TeX 103 hrs 52 mins >>----------------------- 06.61 % HTML 94 hrs 48 mins >>----------------------- 06.03 % Nim 64 hrs 31 mins >------------------------ 04.11 % Other 47 hrs 58 mins >------------------------ 03.05 %
- Flags
REPOSITORY
andGH_TOKEN
are required ONLY if, you are NOT using profile readme. - If you are using
GH_TOKEN
, make sure set the fine grained token scope to repository contents withread-and-write
access. See #141 (comment). WAKATIME_API_KEY
is a required secret. All other environment variables are optional.- The above example does NOT show proper default values, refer #Tweaks for the same.
IGNORED_LANGUAGES
is suggested for .NET users, as WakaTime assumes you're working withBinary
, while debugging.
I am a fan of minimal designs and the profile readme is a great way to show off your skills and interests. The WakaTime API, gets us a lot of data about a person's coding activity including the editors and Operating Systems you used and the projects you worked on. Some of these projects maybe secretive and should not be shown out to the public. Using up more data via the Wakatime API will clutter the profile readme and hinder your chances on displaying what you provide value to the community like the pinned Repositories. I believe that Coding Stats is nerdiest of all since you can tell the community that you are exercising these languages or learning a new language, this will also show that you spend some amount of time to learn and exercise your development skills. That's what matters in the end ❤️
- Flags