Skip to content

Latest commit

Β 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Š GitPulse

Self-hosted GitHub stats β€” because GitHub only keeps traffic for 14 days and has no account-wide dashboard.

A GitHub Action runs once a day, pulls views / unique visitors / clones / referrers / stars / forks / followers for every public repo you own, and merges them into history files committed back to the repo β€” so your data outlives the 14-day window. A static GitHub Pages dashboard charts it all.

⚑ Zero servers, zero cost, runs even when your computer is off. Everything lives on GitHub: the schedule (Actions), the storage (git), and the dashboard (Pages).

GitPulse dashboard

πŸ”— Live demo: koua29.github.io/gitpulse


✨ What you get

  • πŸ“ˆ Unlimited history of views / unique visitors / clones β€” per repo and aggregated across the account
  • ⭐ Stars, forks, followers over time
  • 🌍 Top referring sites and popular content
  • πŸ† Repos ranked by traffic
  • πŸ–₯️ A graphical dashboard on GitHub Pages (Chart.js, dark theme, mobile-friendly)
  • πŸ”– An optional auto-updating badge for your profile README

βš™οΈ How it works

cron 06:17 UTC ─▢ GitHub Action ─▢ collect.py ─▢ merge into data/ ─▢ git commit ─▢ Pages refreshes
                                        β””β–Ά update_profile.py ─▢ badge in <you>/<you> README
File Role
collect.py The collector β€” Python standard library only, no dependencies
update_profile.py Injects the stats badge into your profile README (optional)
.github/workflows/collect.yml The daily schedule + auto-commit
data/ Accumulated history (JSON, versioned by git)
docs/ The GitHub Pages dashboard (static HTML + Chart.js)

πŸš€ Deploy it on your own GitHub account

Nothing to install locally. The whole setup is done on github.com and takes ~5 minutes.

1. Get the code into your account

Click Use this template β–Έ Create a new repository (or Fork), and name it e.g. gitpulse.

The workflow reads the owner from github.repository_owner, so you don't need to edit a single line β€” it automatically targets whoever owns the repo.

2. Create a Personal Access Token (PAT)

GitHub's traffic API requires push access, so you need a token with the repo scope.

Go to Settings β–Έ Developer settings β–Έ Personal access tokens β–Έ Tokens (classic) β†’ Generate new token (classic):

  • Note: anything, e.g. GitPulse
  • Expiration: your call (if you set one, remember to renew it, or the daily job will silently stop)
  • Scopes: check repo β€” that single top-level checkbox is all you need

PAT scopes β€” check repo

Click Generate token and copy it (it's shown only once).

3. Add the token as a repository secret

In your GitPulse repo β†’ Settings β–Έ Secrets and variables β–Έ Actions β–Έ New repository secret:

  • Name: GITPULSE_TOKEN
  • Secret: paste the token

Or with the GitHub CLI:

gh secret set GITPULSE_TOKEN --repo YOUR-USERNAME/gitpulse

4. Enable GitHub Pages

Repo β†’ Settings β–Έ Pages β†’ Source: Deploy from a branch, branch main, folder /docs β†’ Save.

Your dashboard will be at https://YOUR-USERNAME.github.io/gitpulse/.

5. Run it once

Repo β†’ Actions β–Έ GitPulse collect β–Έ Run workflow. That seeds the first snapshot; after that it runs automatically every day.

6. (Optional) Profile README badge

If you have a profile README (a repo named exactly like your username), paste these two markers where you want the badge:

<!--GITPULSE:START-->
<!--GITPULSE:END-->

Each daily run rewrites the block between them, e.g.:

πŸ“Š 247 views (14d) Β· ⭐ 12 stars Β· 🍴 1 forks Β· πŸ‘₯ 3 followers Β· across 20 repos

If you don't have a profile README, this step is skipped automatically β€” nothing to do.


πŸ”’ Privacy

GitPulse collects public repos only (visibility=public, plus a defensive filter). Private repo names and traffic are never written to disk or the dashboard β€” safe to publish the dashboard publicly.

πŸ› οΈ Customize

  • Schedule: edit the cron: line in .github/workflows/collect.yml (crontab syntax, UTC).
  • Dashboard look: it's plain HTML/CSS in docs/index.html β€” tweak colors in the :root block.
  • Run locally:
    export GITHUB_TOKEN=ghp_xxx
    export GH_USER=YOUR-USERNAME
    python collect.py

πŸ“š Recommended reading / Γ€ lire

Des livres sur le vibe coding, Git & GitHub β€” liens affiliΓ©s Amazon :

Git & GitHub Sans Panique Vibe Coding avec Agents IA Vibe Coding Playbook
πŸ™ Git & GitHub Sans Panique
J.P. Deffo Fotso
πŸ€– Vibe Coding avec Agents IA
Manuel Mayer Β· Cursor, Copilot & Lovable
⚑ Vibe Coding Playbook
Tung Knowya

En tant que Partenaire Amazon, je rΓ©alise un bΓ©nΓ©fice sur les achats remplissant les conditions requises. Β· As an Amazon Associate I earn from qualifying purchases.

β˜• Support / Buy me a coffee

If GitPulse is useful to you, a coffee is always appreciated πŸ™

PayPal β€” buy me a coffee

πŸ“ License

MIT β€” see LICENSE. Made to be forked.

About

πŸ“Š Self-hosted GitHub traffic & popularity dashboard β€” daily Action, unlimited history, GitHub Pages

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages