Skip to content
 
 

Latest commit

 

History

531 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A dynamically generated activity graph to show your GitHub activities of last 31 days.

⚠️ NOTICE: DEPLOYMENT MOVED ⚠️

The canonical deployment is now https://github-readme-activity-graph.vercel.app. Previous deployments at https://activity-graph.herokuapp.com (Heroku free tier discontinued) and https://github-readme-activity-graph.cyclic.app (Cyclic.sh shut down in early 2025) are no longer reachable. For background see issue #197.

Please refer to the updated link here

Table of contents

How to Use

Just paste the following URL in your profile readme and you are good to go.

Pass your username in the URL

[![Ashutosh's github activity graph](https://github-readme-activity-graph.vercel.app/graph?username=Ashutosh00710)](https://github.com/ashutosh00710/github-readme-activity-graph)

Use themes

username=ashutosh00710&theme=theme_name

[![Ashutosh's github activity graph](https://github-readme-activity-graph.vercel.app/graph?username=Ashutosh00710&theme=dracula)](https://github.com/ashutosh00710/github-readme-activity-graph)

Manual Customization is also available

Available Themes

Name Preview
Default (cotton candy) graph
react graph
react-dark graph
github graph
github-compact graph
xcode graph
rogue graph
merko graph
vue graph
tokyo-night graph
high-contrast graph

For more themes click here

Customization

Customize the appearance of your Activity Graph however you want with URL params.

Common Options

Arguments Description Type of Value
bg_color card's background color hex code (without #)
border_color card's border color hex code (without #)
color graph card's text color hex code (without #)
title_color graph card's title color hex code (without #)
line graph's line color hex code (without #)
point color of points on line graph hex code (without #)
area_color color of the area under the graph hex code (without #)
area shows area under the graph boolean (default: false)
hide_border makes the border of the graph transparent boolean (default: false)
hide_title sets the title to an empty string boolean (default: false)
custom_title set the title to any string string
theme name of available themes string
radius border radius of graph number (0-16 inclusive)
height height of the graph number (200-600 inclusive)
days number of to days display on graph number between (1 - 90) [Recommended below 40]
from date from which the graph starts format YYYY-MM-DD
to date where the graph will end format YYYY-MM-DD
grid show grid boolean (default: true)

For custom_title please make sure that you are using %20 for spaces

Example:

custom_title=This%20is%20a%20title

[![Ashutosh's github activity graph](https://github-readme-activity-graph.vercel.app/graph?username=ashutosh00710&custom_title=This%20is%20a%20title&hide_border=true)](https://github.com/ashutosh00710/github-readme-activity-graph)

Example:

[![Ashutosh's github activity graph](https://github-readme-activity-graph.vercel.app/graph?username=ashutosh00710&bg_color=fffff0&color=708090&line=24292e&point=24292e&area=true&border_color=ff0000)](https://github.com/ashutosh00710/github-readme-activity-graph)

Deploy on your own Replit instance

Step-by-step instructions for deploying to Replit (from UI)

Follow the steps

  1. Sign in to Replit or create a new account at https://replit.com
  2. Click the Deploy button below
Run on Repl.it
  1. On the page that comes up, choose language as Node.js and then click Import from GitHub Button

    Replit

  2. Visit this link to create a new Personal Access Token

  3. Scroll to the bottom and click "Generate token"

  4. Wait clone done and add Secrets with your Github token

    Secrets

  5. Click the green RUN button on top, the console will run and at last the url will shows on the right

  6. Now just add the following to your profile readme and you're good to go

![Github Activity Graph](<url from step 5>/graph?username=<username>)

Deploy on your own Vercel instance

Step-by-step instructions for deploying to Vercel (from UI)

First Method

  1. Go to vercel.com.
  2. Click on Log in. image
  3. Sign in with GitHub by pressing Continue with GitHub. image
  4. Sign in to GitHub and allow access to all repositories if prompted.
  5. Fork this repo.
  6. Go back to your Vercel dashboard.
  7. To import a project, click the Add New... button and select the Project option. image
  8. Click the Continue with GitHub button, search for the required Git Repository and import it by clicking the Import button. image
  9. Create a personal access token (PAT) here and enable the repo permissions (this allows access to see private repo stats). image
  10. Add the PAT as an environment variable named TOKEN. image
  11. Click deploy, and you're good to go. See your domains to use the API!

Second Method

Alternatively, click the button below and follow the instructions.

Deploy to Vercel

After the deployment is complete:

  1. Click the Continue to Dashboard button image
  2. In the Settings tab, click on Environment Variables and follow steps 9. and 10. of First Method. image
  3. Go to Deployments tab and redeploy the project. image

Finally

Now just add the following to your profile readme and you're good to go.

![Github Activity Graph](<{your_own_domain_name}.vercel.app>/graph?username=<username>)

Self-hosting on DigitalOcean App Platform

This fork ships a Dockerfile and an App Platform spec so the service can run as a container on DigitalOcean (or any other container host — podman, k8s, fly.io, etc.) instead of depending on the upstream Vercel deployment. The upstream deployment is currently returning HTTP 402 because the maintainer's account is billing-locked (Ashutosh00710#257, Ashutosh00710#259). See chicks-net/www-chicks-net#371 for the full rationale.

The app is a plain Express 5 server (src/main.ts) with no Vercel-specific runtime APIs, so it runs unmodified as a long-running Node process inside the container.

Deploy with OpenTofu / Terraform

If wrangling doctl commands by hand isn't your thing, there's a ready-to-use module over in fini-net/fini-infra (l7_application/activity-graph). It provisions the same apps-s-1vcpu-0.5gb container app from this repo's Dockerfile as infrastructure-as-code, and rather than pasting the GitHub PAT into the dashboard it pulls your token out of 1Password via the onepassword provider — so the secret never lands in code or version control. Check that directory's README.md and main.tf for the variables (github_repo, github_branch, http_port, region, etc.) and run a plain tofu apply (or terraform apply) to bring the app up. The manual doctl flow below does the same job; pick whichever fits your workflow.

Prerequisites

Deploy

doctl apps create --spec .do/app.yaml

App Platform builds the image from the repo's Dockerfile, starts one apps-s-1vcpu-0.5gb instance ($5/mo, 512 MiB) in nyc, and assigns a public URL of the form activity-graph-<random>.ondigitalocean.app. Pushes to the deploy branch redeploy automatically (deploy_on_push: true).

At this point the app is live but returns the graceful "Can't fetch any contribution" error-graph SVG because TOKEN is empty.

Set the GitHub token

Set the TOKEN secret via doctl (the spec declares it as type: SECRET, so the value is encrypted at rest and never appears in git):

APP_ID=$(doctl apps list --format ID,Spec.Name --no-header | awk '$2=="activity-graph"{print $1; exit}')
doctl apps update "$APP_ID" --spec .do/app.yaml \
  --set-env TOKEN=<your-github-pat>

Or via the App Platform dashboard: Settings → App-Level Environment Variables → Add → TOKEN = <your-pat>, type Secret.

After the redeploy, GET https://activity-graph-<random>.ondigitalocean.app/graph?username=<your-name>&theme=github-compact returns a real contribution-graph SVG.

Point a custom domain (optional)

The spec intentionally omits a domains: block so first-deploy Just Works. To add activity-graph.chicks.net (or similar) once DNS is ready, add to .do/app.yaml:

domains:
- domain: activity-graph.chicks.net
  type: PRIMARY

then add a CNAME on the chicks.net side pointing at the .ondigitalocean.app hostname and run doctl apps update "$APP_ID" --spec .do/app.yaml --set-env TOKEN=<your-pat>.

Updating the deployment

  • Code change on deploy branch: App Platform redeploys automatically on push (deploy_on_push: true).
  • Spec change: doctl apps update "$APP_ID" --spec .do/app.yaml --set-env TOKEN=<your-pat>. ⚠ Always pass --set-env TOKEN=... when updating from the spec — the checked-in spec keeps TOKEN's value empty (to keep the secret out of git), so omitting the flag resets the secret and breaks /graph (it returns the "Can't fetch" error-graph SVG) until TOKEN is set again. Alternatively, update the spec via the dashboard, which preserves existing secrets.
  • Spec validation in CI: the Validate App Spec workflow checks .do/app.yaml on PRs. Without a DIGITALOCEAN_ACCESS_TOKEN repo secret it falls back to a YAML syntax check; with the secret it runs doctl apps spec validate.

Contributing

Please read through our contributing guidelines. Directions are included for opening issues, coding standards, and notes on development.

Core Team 💻


Ashutosh Dwivedi

📆 💻 📖 🤔

Kshitij Srivastava

📆 💻 📖 🎨

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Upamanyu Das

📖

Jonah Lawrence

💻 📖

Milind Modi

📖

Vaibhav

💻 📖

Jacob Philpott

💻 📖

Sonu Kumar

🎨 📖

Mykola Symon

💻

Sreyan Ghosh

🎨

Anant Mishra

🎨

Skyler

🎨

Iryna Mykoliuk

🎨

Dalpat Rathore

🎨 💻

Dmitriy Fishman

📖

MagicLike

🎨 💻

OnkarRuikar

💻

valetzx

📖

tranthaituananh

🎨 📖

polekstulod

📖

jmloudis

💻

fabianocouto

💻 📖

This project follows the all-contributors specification. Contributions of any kind welcome!

Resources Used to build this project

Purpose Library Name Link
Graph Construction CHARTIST.JS https://github.com/gionkunz/chartist-js


Star History

Star History Chart

Made with ❤ and TypeScript

About

A dynamically generated activity graph to show your GitHub activities of last 31 days.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages