Faq
FAQ
How do I create a Readme for my profile?
A profile readme appears on your profile page when you create a repository with the same name as your username and add a README.md file to it. For example, the repository for the user DenverCoder1 is located at DenverCoder1/DenverCoder1.
How do I include GitHub Readme Streak Stats in my Readme?
Markdown files on GitHub support embedded images using Markdown or HTML. You can customize your Streak Stats image on the demo site and use the image source in either of the following ways:
Markdown
[](https://git.io/streak-stats)HTML
<a href="https://git.io/streak-stats"><img src="https://streak-stats.demolab.com?user=DenverCoder1"/></a>Why doesn't my Streak Stats match my contribution graph?
GitHub Readme Streak Stats uses the GitHub API to fetch your contribution data. These stats are returned in UTC time which may not match your local time. Additionally, due to caching, the stats may not be updated immediately after a commit. You may need to wait up to a few hours to see the latest stats.
If you think your stats are not showing up because of a time zone issue, you can try one of the following:
1. Change the date of the commit. You can adjust the time of a past commit to make it in the middle of the day.
2. Create a new commit in a repository with the date set to the date that is missing from your streak stats:
git commit --date="2022-08-02 12:00" -m "Test commit" --allow-empty
git pushWhat is considered a "contribution"?
Contributions include commits, pull requests, and issues that you create in standalone repositories (Learn more about what is considered a contribution).
The longest streak is the highest number of consecutive days on which you have made at least one contribution.
The current streak is the number of consecutive days ending with the current day on which you have made at least one contribution. If you have made a contribution today, it will be counted towards the current streak, however, if you have not made a contribution today, the streak will only count days before today so that your streak will not be zero.
Note: You may need to wait up to 24 hours for new contributions to show up (Learn how contributions are counted)
How do I enable private contributions?
To include contributions in private repositories, turn on the setting for "Private contributions" from the dropdown menu above the contribution graph on your profile page.
How do I center the image on the page?
To center align images, you must use the HTML syntax and wrap it in an element with the HTML attribute align="center".
<p align="center">
<a href="https://git.io/streak-stats"><img src="https://streak-stats.demolab.com?user=DenverCoder1"/></a>
</p>How do I make different images for dark mode and light mode?
You can specify theme context using the <picture> and <source> elements as shown below. The dark mode version appears in the srcset of the <source> tag and the light mode version appears in the src of the <img> tag.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://streak-stats.demolab.com?user=DenverCoder1&theme=dark" />
<img src="https://streak-stats.demolab.com?user=DenverCoder1&theme=default" />
</picture>Why and how do I self-host GitHub Readme Streak Stats?
Self-hosting the code can be done online and only takes a couple minutes. The benefits include better uptime since it will use your own access token so will not run into ratelimiting issues and it allows you to customize the deployment for your own use case.
đē Click here for a video tutorial on how to self-host on Vercel
See Deploying it on your own in the Readme for detailed instructions.
---
Themes
Currently supported themes
To enable a theme, append &theme= followed by the theme name to the end of your url.
You can also try out and customize these themes on the Demo Site!
Note: Theme names provided are case-insensitive and any use of underscores will be treated the same as hyphens.
| Theme | Preview |
| :---------------------------: | :------------------------------------------------------------------------------------------------------------------------: |
| default | |
| dark | |
| highcontrast | |
| transparent | |
| radical | |
| merko | |
| gruvbox | |
| gruvbox-duo | |
| tokyonight | |
| tokyonight-duo | |
| onedark | |
| onedark-duo | |
| cobalt | |
| synthwave | |
| dracula | |
| prussian | |
| monokai | |
| vue | |
| vue-dark | |
| shades-of-purple | |
| nightowl | |
| buefy | |
| buefy-dark | |
| blue-green | |
| algolia | |
| great-gatsby | |
| darcula | |
| bear | |
| solarized-dark | |
| solarized-light | |
| chartreuse-dark | |
| nord | |
| gotham | |
| material-palenight | |
| graywhite | |
| vision-friendly-dark | |
| ayu-mirage | |
| midnight-purple | |
| calm | |
| flag-india | |
| omni | |
| react | |
| jolly | |
| maroongold | |
| yeblu | |
| blueberry | |
| blueberry-duo | |
| slateorange | |
| kacho-ga | |
| ads-juicy-fresh | |
| black-ice | |
| soft-green | |
| blood | |
| blood-dark | |
| green-nur | |
| neon-dark | |
| neon-palenight | |
| dark-smoky | |
| monokai-metallian | |
| city-lights | |
| blux | |
| earth | |
| deepblue | |
| holi-theme | |
| ayu-light | |
| javascript | |
| javascript-dark | |
| noctis-minimus | |
| github-dark | |
| github-dark-blue | |
| github-light | |
| elegant | |
| leafy | |
| navy-gear | |
| hacker | |
| garden | |
| github-green-purple | |
| icegray | |
| neon-blurange | |
| yellowdark | |
| java-dark | |
| android-dark | |
| deuteranopia-friendly-theme | |
| windows-dark | |
| git-dark | |
| python-dark | |
| sea | |
| sea-dark | |
| violet-dark | |
| horizon | |
| material | |
| modern-lilac | |
| modern-lilac2 | |
| halloween | |
| violet-punch | |
| submarine-flowers | |
| rising-sun | |
| gruvbox-light | |
| outrun | |
| ocean-dark | |
| discord-old-blurple | |
| aura-dark | |
| panda | |
| cobalt2 | |
| swift | |
| aura | |
| apprentice | |
| moltack | |
| codestackr | |
| rose-pine | |
| date-night | |
| one-dark-pro | |
| rose | |
| neon | |
| sunset-gradient | |
| ocean-gradient | |
| ambient-gradient | |
| catppuccin-latte | |
| catppuccin-frappe | |
| catppuccin-macchiato | |
| catppuccin-mocha | |
| burnt-neon | |
| humoris | |
| shadow-red | |
| shadow-green | |
| shadow-blue | |
| shadow-orange | |
| shadow-purple | |
| shadow-brown | |
| github-dark-dimmed | |
| blue-navy | |
| calm-pink | |
| whatsapp-light | |
| whatsapp-dark | |
| carbonfox | |
| dawnfox | |
| dayfox | |
| duskfox | |
| nightfox | |
| nordfox | |
| terafox | |
| iceberg | |
| whatsapp-light2 | |
| whatsapp-dark2 | |
| travelers-theme | |
| youtube-dark | |
| meta-light | |
| meta-dark | |
| dark-minimalist | |
| telegram | |
| taiga | |
| telegram-gradient | |
| microsoft | |
| microsoft-dark | |
| hacker-inverted | |
| rust-ferris-light | |
| rust-ferris-dark | |
| cyber-streakglow | |
| vitesse | |
| nord-aurora | |
| dark-aura | |
| everforest-dark | |
| everforest-light | |
| oceanic-next | |
| kanagawa-paper | |
| sakura-x | |
Can't find the theme you like?
You can now customize your stats card with the interactive Demo Site or by customizing the url parameters.
If you would like to share your theme with others, feel free to open an issue/pull request!
Note: When submitting a new theme, make sure the name is all lowercase. Hyphens are allowed between words, but there should be no underscores. On the demo site, you can export a list of colors from the advanced section by clicking "Export to PHP".
---
CONTRIBUTING
Contributing Guidelines
Contributions are welcome! Feel free to open an issue or submit a pull request if you have a way to improve this project.
Make sure your request is meaningful and you have tested the app locally before submitting a pull request.
This documentation contains a set of guidelines to help you during the contribution process.
Need some help regarding the basics?
You can refer to the following articles on the basics of Git and GitHub in case you are stuck:
- Forking a Repo
- Cloning a Repo
- How to create a Pull Request
- Getting started with Git and GitHub
- Learn GitHub from Scratch
Installing Requirements
#### Requirements
- PHP 8.2+
- Composer
- Inkscape (for PNG rendering)
#### Linux
sudo apt-get install php
sudo apt-get install php-curl
sudo apt-get install composer
sudo apt-get install inkscape#### Windows
Install PHP from XAMPP or php.net
âļ How to install and run PHP using XAMPP (Windows)
Clone the repository
git clone https://github.com/DenverCoder1/github-readme-streak-stats.git
cd github-readme-streak-statsAuthorization
To get the GitHub API to run locally you will need to provide a token.
1. Visit this link to create a new Personal Access Token
2. Scroll to the bottom and click "Generate token"
3. Make a copy of the .env.example named .env in the root directory and add your token after TOKEN=.
TOKEN=<your-token>Install dependencies
Run the following command to install all the required dependencies to work on this project.
composer installRunning the app locally
composer startOpen http://localhost:8000/?user=DenverCoder1 to run the project locally
Open http://localhost:8000/demo/ to run the demo site
Running the tests
Run the following command to run the PHPUnit test script which will verify that the tested functionality is still working.
composer testLinting
This project uses Prettier for formatting PHP, Markdown, JavaScript and CSS files.
Run prettier and show the files that need to be fixed
composer lintRun prettier and fix the files
composer lint-fixSubmitting Contributions đ¨âđģ
Below you will find the process and workflow used to review and merge your changes.
Step 0 : Find an issue
- Take a look at the existing issues or create your own issues!
Step 1 : Fork the Project
- Fork this repository. This will create a copy of this repository on your GitHub profile.
Keep a reference to the original project in the upstream remote.
git clone https://github.com/<your-username>/github-readme-streak-stats.git
cd github-readme-streak-stats
git remote add upstream https://github.com/DenverCoder1/github-readme-streak-stats.git- If you have already forked the project, update your copy before working.
git remote update
git checkout <branch-name>
git rebase upstream/<branch-name>Step 2 : Branch
Create a new branch. Use its name to identify the issue you're addressing.
Creates a new branch with the name feature_name and switches to it
git checkout -b feature_nameStep 3 : Work on the issue assigned
- Work on the issue(s) assigned to you.
- Make all the necessary changes to the codebase.
- After you've made changes or made your contribution to the project, add changes to the branch you've just created using:
To add all new files to the branch
git add .To add only a few files to the branch
git add <some files (with path)>Step 4 : Commit
- Commit a descriptive message using:
This message will get associated with all files you have changed
git commit -m "message"Step 5 : Work Remotely
- Now you are ready to your work on the remote repository.
- When your work is ready and complies with the project conventions, upload your changes to your fork:
To push your work to your remote repository
git push -u origin Branch_Name- Here is how your branch will look.
Step 6 : Pull Request
- Go to your forked repository in your browser and click on "Compare and pull request". Then add a title and description to your pull request that explains your contribution.
<img width="700" alt="compare and pull request" src="https://user-images.githubusercontent.com/63443481/136186304-c0a767ea-1fd2-4b0c-b5a8-3e366ddc06a3.PNG">
<img width="882" alt="opening pull request" src="https://user-images.githubusercontent.com/63443481/136186322-bfd5f333-136a-4d2f-8891-e8f97c379ba8.PNG">
- Voila! Your Pull Request has been submitted and it's ready to be merged.đĨŗ
#### Happy Contributing!
---
README
<p align="center">
<img src="https://i.imgur.com/GZHodUG.png" width="100px"/>
<h3 align="center">Github Readme Streak Stats</h3>
</p>
<p align="center">
Display your total contributions, current streak,
<br/>
and longest streak on your GitHub profile README
</p>
<p align="center">
<a href="https://github.com/search?q=path%3A*.md+%28streak-stats.demolab.com+OR+git.io%2Fstreak-stats+OR+denvercoder1%2Fgithub-readme-streak-stats+OR+github-readme-streak-stats-eight.vercel.app%29&type=code" alt="Users" title="Repo users">
<img src="https://freshidea.com/jonah/app/github-search-results/streak-stats"/></a>
<a href="https://discord.gg/fPrdqh3Zfu" alt="Discord" title="Dev Pro Tips Discussion & Support Server">
<img src="https://img.shields.io/discord/819650821314052106?color=7289DA&logo=discord&logoColor=white&style=for-the-badge"/></a>
</p>
⥠Quick setup
Option 1: Web Deployment
1. Copy-paste the markdown below into your GitHub profile README
2. Replace the value after ?user= with your GitHub username
[](https://git.io/streak-stats)#### Next Steps
- Check out the Demo Site or Options below for available customizations.
- It is recommended to self-host the project more better reliability. See Deploying it on your own for more details.
[ [][herokudeploy] [][verceldeploy]
Option 2: GitHub Actions
GitHub Actions can generate a static SVG in your profile repository so your README does not depend on the public hosted endpoint. If you need private contribution data, add a custom token to Repository Secrets using the steps below.
<details>
<summary>Adding a Custom Token to Repository Secrets</summary><br/>
1. Visit this link to create a new Personal Access Token (no scopes required)
2. Scroll to the bottom and click "Generate token"
3. Visit your profile repository settings (Secrets and Variables > Actions) https://github.com/[YOUR USERNAME]/[YOUR USERNAME]/settings/secrets/actions
4. Click "New Repository Secret" and create a secret with a custom name (eg. STREAK_STATS_TOKEN) and your token from step 2 as the value.
5. Replace ${{ secrets.GITHUB_TOKEN }} in the yml file below with ${{ secrets.STREAK_STATS_TOKEN }} (using the custom name you gave the secret).
</details>
#### 1. Create the workflow file
Create a folder in your repo named .github and within it a folder named workflows and add a file /.github/workflows/streak-stats.yml in your profile repo (USERNAME/USERNAME):
name: Update streak statson:
schedule:
- cron: "0 3 *" # Run every day at 03:00
push:
paths:
- ".github/workflows/streak-stats.yml" # Run any time this file is modified
workflow_dispatch: # Run manually from the Actions tab
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Generate streak stats
uses: DenverCoder1/github-readme-streak-stats@main
with:
options: user=${{ github.repository_owner }}&theme=default&disable_animations=true
path: profile/streak.svg
token: ${{ secrets.GITHUB_TOKEN }}
- name: Commit streak stats
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add profile/streak.svg
git commit -m "Update streak stats" || exit 0
git push
#### 2. Show the generated stats in your README
Add this to your profile README.md file where you want the stats to appear:
<a href="https://git.io/streak-stats"><img src="./profile/streak.svg" alt="GitHub Streak" /></a>If you are using a fork, replace DenverCoder1 with the account or organization that hosts your fork. Do not put a PAT directly in the workflow file; store it in GitHub Secrets and reference it as ${{ secrets.YOUR_SECRET_NAME }}.
#### Next Steps
- Check out the Options below for available customizations.
â Demo Site
Here you can customize your Streak Stats card with a live preview.
<https://streak-stats.demolab.com>
[](http://streak-stats.demolab.com/demo/)
đ§ Options
The user field is the only required option. All other fields are optional.
If the theme parameter is specified, any color customizations specified will be applied on top of the theme, overriding the theme's values.
| Parameter | Details | Example |
| :------------------------: | :----------------------------------------------: | :------------------------------------------------------------------------------------------------: |
| user | GitHub username to show stats for | DenverCoder1 |
| theme | The theme to apply (Default: default) | dark, radical, etc. đ¨â |
| hide_border | Make the border transparent (Default: false) | true or false |
| border_radius | Set the roundness of the edges (Default: 4.5) | Number 0 (sharp corners) to 248 (ellipse) |
| background | Background color (eg. f2f2f2, 35,d22,00f) | hex code without #, css color, or gradient in the form angle,start_color,...,end_color |
| border | Border color | hex code without # or css color |
| stroke | Stroke line color between sections | hex code without # or css color |
| ring | Color of the ring around the current streak | hex code without # or css color |
| fire | Color of the fire in the ring | hex code without # or css color |
| currStreakNum | Current streak number | hex code without # or css color |
| sideNums | Total and longest streak numbers | hex code without # or css color |
| currStreakLabel | Current streak label | hex code without # or css color |
| sideLabels | Total and longest streak labels | hex code without # or css color |
| dates | Date range text color | hex code without # or css color |
| excludeDaysLabel | Excluded days of the week text color | hex code without # or css color |
| date_format | Date format pattern or empty for locale format | See note below on đ
Date Formats |
| locale | Locale for labels and numbers (Default: en) | ISO 639-1 code - See đĒ Locales |
| timezone | Timezone used to determine the current day | IANA timezone identifier, eg. Asia/Kolkata |
| short_numbers | Use short numbers (e.g. 1.5k instead of 1,500) | true or false |
| type | Output format (Default: svg) | Current options: svg, png or json |
| mode | Streak mode (Default: daily) | daily (contribute daily) or weekly (contribute once per Sun-Sat week) |
| exclude_days | List of days of the week to exclude from streaks | Comma-separated list of day abbreviations (Sun, Mon, Tue, Wed, Thu, Fri, Sat) e.g. Sun,Sat |
| disable_animations | Disable SVG animations (Default: false) | true or false |
| card_width | Width of the card in pixels (Default: 495) | Positive integer, minimum width is 100px per column |
| card_height | Height of the card in pixels (Default: 195) | Positive integer, minimum height is 170px |
| hide_total_contributions | Hide the total contributions (Default: false) | true or false |
| hide_current_streak | Hide the current streak (Default: false) | true or false |
| hide_longest_streak | Hide the longest streak (Default: false) | true or false |
| starting_year | Starting year of contributions | Integer, must be 2005 or later, eg. 2017. By default, your account creation year is used. |
đ Themes
To enable a theme, append &theme= followed by the theme name to the end of the source URL:
[](https://git.io/streak-stats)| Theme | Preview |
| :------------: | :-----------------------------------------------------------: |
| default | |
| dark | |
| highcontrast | |
| More themes! | đ¨ See a list of all available themes |
If you have come up with a new theme you'd like to share with others, please see Issue #32 for more information on how to contribute.
đĒ Locales
The following are the locales that have labels translated in Streak Stats. The locale query parameter accepts any ISO language or locale code, see here for a list of valid locales. The locale provided will be used for the date format and number format even if translations are not yet available.
<table><tbody><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L37"><code>en</code></a> - English<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L37"><img src="https://progress-bar.xyz/100" alt="English 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L47"><code>am</code></a> - á ááá<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L47"><img src="https://progress-bar.xyz/100" alt="á ááá 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L56"><code>ar</code></a> - Ø§ŲØšØąØ¨ŲØŠ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L56"><img src="https://progress-bar.xyz/100" alt="Ø§ŲØšØąØ¨ŲØŠ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L67"><code>as</code></a> - āĻ
āϏāĻŽā§āϝāĻŧāĻž<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L67"><img src="https://progress-bar.xyz/100" alt="āĻ
āϏāĻŽā§āϝāĻŧāĻž 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L84"><code>bho</code></a> - ā¤āĨā¤ā¤ĒāĨ⤰āĨ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L84"><img src="https://progress-bar.xyz/100" alt="ā¤āĨā¤ā¤ĒāĨ⤰āĨ 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L93"><code>bn</code></a> - āĻŦāĻžāĻāϞāĻž<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L93"><img src="https://progress-bar.xyz/100" alt="āĻŦāĻžāĻāϞāĻž 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L102"><code>ca</code></a> - català <br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L102"><img src="https://progress-bar.xyz/100" alt="català 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L111"><code>ceb</code></a> - Cebuano<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L111"><img src="https://progress-bar.xyz/100" alt="Cebuano 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L120"><code>da</code></a> - dansk<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L120"><img src="https://progress-bar.xyz/100" alt="dansk 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L129"><code>de</code></a> - Deutsch<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L129"><img src="https://progress-bar.xyz/100" alt="Deutsch 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L138"><code>el</code></a> - ÎÎģÎģΡÎŊΚÎēÎŦ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L138"><img src="https://progress-bar.xyz/100" alt="ÎÎģÎģΡÎŊΚÎēÎŦ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L147"><code>es</code></a> - espaÃąol<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L147"><img src="https://progress-bar.xyz/100" alt="espaÃąol 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L156"><code>et</code></a> - eesti<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L156"><img src="https://progress-bar.xyz/100" alt="eesti 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L165"><code>fa</code></a> - ŲØ§ØąØŗÛ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L165"><img src="https://progress-bar.xyz/100" alt="ŲØ§ØąØŗÛ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L176"><code>fi</code></a> - suomi<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L176"><img src="https://progress-bar.xyz/100" alt="suomi 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L185"><code>fil</code></a> - Filipino<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L185"><img src="https://progress-bar.xyz/100" alt="Filipino 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L194"><code>fr</code></a> - français<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L194"><img src="https://progress-bar.xyz/100" alt="français 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L203"><code>gu</code></a> - āĒāĢāĒāǰāĒžāǤāĢ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L203"><img src="https://progress-bar.xyz/100" alt="āĒāĢāĒāǰāĒžāǤāĢ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L212"><code>he</code></a> - ×ĸ×ר××Ē<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L212"><img src="https://progress-bar.xyz/100" alt="×ĸ×ר××Ē 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L222"><code>hi</code></a> - ā¤šā¤ŋ⤍āĨā¤ĻāĨ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L222"><img src="https://progress-bar.xyz/100" alt="ā¤šā¤ŋ⤍āĨā¤ĻāĨ 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L239"><code>hu</code></a> - magyar<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L239"><img src="https://progress-bar.xyz/100" alt="magyar 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L256"><code>id</code></a> - Indonesia<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L256"><img src="https://progress-bar.xyz/100" alt="Indonesia 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L265"><code>it</code></a> - italiano<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L265"><img src="https://progress-bar.xyz/100" alt="italiano 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L274"><code>ja</code></a> - æĨæŦčĒ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L274"><img src="https://progress-bar.xyz/100" alt="æĨæŦčĒ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L285"><code>jv</code></a> - Jawa<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L285"><img src="https://progress-bar.xyz/100" alt="Jawa 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L294"><code>kk</code></a> - ŌĐ°ĐˇĐ°Ō ŅŅĐģŅ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L294"><img src="https://progress-bar.xyz/100" alt="ŌĐ°ĐˇĐ°Ō ŅŅĐģŅ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L303"><code>kn</code></a> - ā˛ā˛¨āŗā˛¨ā˛Ą<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L303"><img src="https://progress-bar.xyz/100" alt="ā˛ā˛¨āŗā˛¨ā˛Ą 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L312"><code>ko</code></a> - íęĩė´<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L312"><img src="https://progress-bar.xyz/100" alt="íęĩė´ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L321"><code>mai</code></a> - ā¤ŽāĨā¤Ĩā¤ŋ⤞āĨ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L321"><img src="https://progress-bar.xyz/100" alt="ā¤ŽāĨā¤Ĩā¤ŋ⤞āĨ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L330"><code>mal</code></a> - ā´Žā´˛ā´¯ā´žā´ŗā´<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L330"><img src="https://progress-bar.xyz/100" alt="ā´Žā´˛ā´¯ā´žā´ŗā´ 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L340"><code>mi</code></a> - MÄori<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L340"><img src="https://progress-bar.xyz/100" alt="MÄori 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L349"><code>mr</code></a> - ā¤Žā¤°ā¤žā¤ āĨ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L349"><img src="https://progress-bar.xyz/100" alt="ā¤Žā¤°ā¤žā¤ āĨ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L358"><code>ms</code></a> - Melayu<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L358"><img src="https://progress-bar.xyz/100" alt="Melayu 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L367"><code>ms_ID</code></a> - Melayu (Indonesia)<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L367"><img src="https://progress-bar.xyz/100" alt="Melayu (Indonesia) 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L376"><code>my</code></a> - ááŧááēááŦ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L376"><img src="https://progress-bar.xyz/100" alt="ááŧááēááŦ 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L385"><code>ne</code></a> - ⤍āĨā¤Ēā¤žā¤˛āĨ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L385"><img src="https://progress-bar.xyz/100" alt="⤍āĨā¤Ēā¤žā¤˛āĨ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L394"><code>nl</code></a> - Nederlands<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L394"><img src="https://progress-bar.xyz/100" alt="Nederlands 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L403"><code>no</code></a> - norsk<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L403"><img src="https://progress-bar.xyz/100" alt="norsk 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L412"><code>pa</code></a> - ā¨ĒāŠ°ā¨ā¨žā¨ŦāŠ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L412"><img src="https://progress-bar.xyz/100" alt="ā¨ĒāŠ°ā¨ā¨žā¨ŦāŠ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L421"><code>pl</code></a> - polski<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L421"><img src="https://progress-bar.xyz/100" alt="polski 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L430"><code>ps</code></a> - ŲžÚØĒŲ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L430"><img src="https://progress-bar.xyz/100" alt="ŲžÚØĒŲ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L441"><code>pt</code></a> - portuguÃĒs<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L441"><img src="https://progress-bar.xyz/100" alt="portuguÃĒs 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L450"><code>pt_BR</code></a> - portuguÃĒs (Brasil)<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L450"><img src="https://progress-bar.xyz/100" alt="portuguÃĒs (Brasil) 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L459"><code>ro</code></a> - romÃĸnÄ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L459"><img src="https://progress-bar.xyz/100" alt="romÃĸnÄ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L468"><code>ru</code></a> - ŅŅŅŅĐēиК<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L468"><img src="https://progress-bar.xyz/100" alt="ŅŅŅŅĐēиК 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L485"><code>sa</code></a> - ⤏ā¤ā¤¸āĨā¤āĨ⤤ ā¤ā¤žā¤ˇā¤ž<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L485"><img src="https://progress-bar.xyz/100" alt="⤏ā¤ā¤¸āĨā¤āĨ⤤ ā¤ā¤žā¤ˇā¤ž 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L494"><code>sd_PK</code></a> - ØŗŲÚŲ (ŲžØ§ÚĒØŗØĒاŲ)<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L494"><img src="https://progress-bar.xyz/100" alt="ØŗŲÚŲ (ŲžØ§ÚĒØŗØĒاŲ) 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L506"><code>sr_Cyrl</code></a> - ŅŅĐŋŅĐēи (ŅиŅиĐģиŅа)<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L506"><img src="https://progress-bar.xyz/100" alt="ŅŅĐŋŅĐēи (ŅиŅиĐģиŅа) 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L515"><code>sr_Latn</code></a> - srpski (latinica)<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L515"><img src="https://progress-bar.xyz/100" alt="srpski (latinica) 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L524"><code>su</code></a> - Basa Sunda<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L524"><img src="https://progress-bar.xyz/100" alt="Basa Sunda 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L533"><code>sv</code></a> - svenska<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L533"><img src="https://progress-bar.xyz/100" alt="svenska 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L542"><code>sw</code></a> - Kiswahili<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L542"><img src="https://progress-bar.xyz/100" alt="Kiswahili 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L551"><code>ta</code></a> - āŽ¤āŽŽāŽŋāŽ´ā¯<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L551"><img src="https://progress-bar.xyz/100" alt="āŽ¤āŽŽāŽŋāŽ´ā¯ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L560"><code>tcy</code></a> - Tulu<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L560"><img src="https://progress-bar.xyz/100" alt="Tulu 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L569"><code>te</code></a> - ā°¤āąā°˛āąā°āą<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L569"><img src="https://progress-bar.xyz/100" alt="ā°¤āąā°˛āąā°āą 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L578"><code>th</code></a> - āšā¸ā¸ĸ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L578"><img src="https://progress-bar.xyz/100" alt="āšā¸ā¸ĸ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L587"><code>tr</code></a> - TÃŧrkçe<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L587"><img src="https://progress-bar.xyz/100" alt="TÃŧrkçe 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L596"><code>uk</code></a> - ŅĐēŅаŅĐŊŅŅĐēа<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L596"><img src="https://progress-bar.xyz/100" alt="ŅĐēŅаŅĐŊŅŅĐēа 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L605"><code>ur_PK</code></a> - Ø§ØąØ¯Ų (ŲžØ§ÚŠØŗØĒاŲ)<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L605"><img src="https://progress-bar.xyz/100" alt="Ø§ØąØ¯Ų (ŲžØ§ÚŠØŗØĒاŲ) 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L616"><code>vi</code></a> - Tiáēŋng Viáģt<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L616"><img src="https://progress-bar.xyz/100" alt="Tiáēŋng Viáģt 100%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L625"><code>yo</code></a> - Ãdè YorÚbÃĄ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L625"><img src="https://progress-bar.xyz/100" alt="Ãdè YorÚbÃĄ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L635"><code>zh_Hans</code></a> - 䏿īŧįŽäŊīŧ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L635"><img src="https://progress-bar.xyz/100" alt="䏿īŧįŽäŊīŧ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L645"><code>zh_Hant</code></a> - 䏿īŧįšéĢīŧ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L645"><img src="https://progress-bar.xyz/100" alt="䏿īŧįšéĢīŧ 100%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L76"><code>bg</code></a> - ĐąŅĐģĐŗĐ°ŅŅĐēи<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L76"><img src="https://progress-bar.xyz/86" alt="ĐąŅĐģĐŗĐ°ŅŅĐēи 86%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L231"><code>ht</code></a> - crÊole haïtien<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L231"><img src="https://progress-bar.xyz/86" alt="crÊole haïtien 86%"></a></td></tr><tr><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L248"><code>hy</code></a> - Õ°ÕĄÕĩÕĨÖÕĨÕļ<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L248"><img src="https://progress-bar.xyz/86" alt="Õ°ÕĄÕĩÕĨÖÕĨÕļ 86%"></a></td><td><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L477"><code>rw</code></a> - Kinyarwanda<br /><a href="https://github.com/DenverCoder1/github-readme-streak-stats/blob/main/src/translations.php#L477"><img src="https://progress-bar.xyz/86" alt="Kinyarwanda 86%"></a></td><td></td><td></td><td></td></tr></tbody></table>
If you would like to help translate the Streak Stats cards, please see Issue #236 for more information.
đ Date Formats
If date_format is not provided or is empty, the PHP Intl library is used to determine the date format based on the locale specified in the locale query parameter.
A custom date format can be specified by passing a string to the date_format parameter.
The required format is to use format string characters from PHP's date function with brackets around the part representing the year.
When the contribution year is equal to the current year, the characters in brackets will be omitted.
Examples:
| Date Format | Result |
| :-----------------: | :-----------------------------------------------------------------------------: |
| <pre>d F[, Y]</pre> | <pre>"2020-04-14" => "14 April, 2020"<br/><br/>"2024-04-14" => "14 April"</pre> |
| <pre>j/n/Y</pre> | <pre>"2020-04-14" => "14/4/2020"<br/><br/>"2024-04-14" => "14/4/2024"</pre> |
| <pre>[Y.]n.j</pre> | <pre>"2020-04-14" => "2020.4.14"<br/><br/>"2024-04-14" => "4.14"</pre> |
| <pre>M j[, Y]</pre> | <pre>"2020-04-14" => "Apr 14, 2020"<br/><br/>"2024-04-14" => "Apr 14"</pre> |
Example
[](https://git.io/streak-stats)âšī¸ How these stats are calculated
This tool uses the contribution graphs on your GitHub profile to calculate which days you have contributed.
To include contributions in private repositories, turn on the setting for "Private contributions" from the dropdown menu above the contribution graph on your profile page.
Contributions include commits, pull requests, and issues that you create in standalone repositories.
The longest streak is the highest number of consecutive days on which you have made at least one contribution.
The current streak is the number of consecutive days ending with the current day on which you have made at least one contribution. If you have made a contribution today, it will be counted towards the current streak, however, if you have not made a contribution today, the streak will only count days before today so that your streak will not be zero.
You may need to wait up to 24 hours for new contributions to show up (Learn how contributions are counted)
đ¤ Deploying it on your own
It is preferable to either use GitHub Actions, or host the files on your own server which takes less than 2 minutes to set up.
Doing this can lead to better uptime and more control over customization (you can modify the code for your usage).
You can deploy the PHP files on any website server with PHP installed including Heroku and Vercel.
The Inkscape dependency is required for PNG rendering, as well as Segoe UI font for the intended rendering. If using Heroku, the buildpacks will install these for you automatically.
Deploy to Vercel
Vercel is the recommended option for hosting the files since it is free and easy to set up. Watch the video below or expand the instructions to learn how to deploy to Vercel.
PNG mode is not supported since Inkscape will not be installed but the default SVG mode will work.
đē Click here for a video tutorial on how to self-host on Vercel
<details>
<summary><b>Instructions for deploying to Vercel (Free)</b></summary>
Step-by-step instructions for deploying to Vercel
#### Option 1: Deploy to Vercel quickly with the Deploy button (recommended)
Make sure that you host the vercel branch as otherwise you'll get a 404 error from Vercel. You can set the vercel branch as default after forking the repo.
1. Click the Deploy button below
[ [][verceldeploy]
2. Create your repository by filling in a Repository Name and clicking "Create"
3. Visit this link to create a new Personal Access Token (no scopes required)
4. Scroll to the bottom and click "Generate token"
5. Add the token as a Config Var with the key TOKEN:
6. Click "Deploy" at the end of the form
7. Once the app is deployed, click the screenshot of your app or continue to the dashboard to find your domain to use in place of streak-stats.demolab.com
#### Option 2: Deploy to Vercel manually
1. Sign in to Vercel or create a new account at <https://vercel.com>
2. Use the following command to clone the repository: git clone https://github.com/DenverCoder1/github-readme-streak-stats.git. If you plan to make changes, you can also fork the repository and clone your fork instead. If you do not have Git installed, you can download it from <https://git-scm.com/downloads>.
3. Navigate to the cloned repository's directory using the command cd github-readme-streak-stats
4. Switch to the "vercel" branch using the command git checkout vercel
5. Make sure you have the Vercel CLI (Command Line Interface) installed on your system. If not, you can download it from <https://vercel.com/download>.
6. Run the command vercel and follow the prompts to link your Vercel account and choose a project name
7. After successful deployment, your app will be available at <project-name>.vercel.app
8. Open this link to create a new Personal Access Token on GitHub. You don't need to select any scopes for the token.
9. Scroll to the bottom of the page and click on "Generate token"
10. Visit the Vercel dashboard at <https://vercel.com/dashboard> and select your project. Then, click on "Settings" and choose "Environment Variables".
11. Add a new environment variable with the key TOKEN and the value as the token you generated in step 9, then save your changes
12. (Optional) You can also set the WHITELIST environment variable to restrict which GitHub usernames can be accessed through the service. Provide the usernames as a comma-separated list, for example: user1,user2,user3. If the variable is not set, information can be requested for any GitHub user.
13. To apply the new environment variable(s), you need to redeploy the app. Run vercel --prod to deploy the app to production.
â ī¸ Note
To set up automatic Vercel deployments from GitHub, make sure to turn off "Include source files outside of the Root Directory" in the General settings and use vercel as the production branch in the Git settings.</details>
Deploy on Heroku
Heroku is another great option for hosting the files. All features are supported on Heroku and it is where the default domain is hosted. Heroku is not free, however, and you will need to pay between \$5 and \$7 per month to keep the app running. Expand the instructions below to learn how to deploy to Heroku.
<details>
<summary><b>Instructions for deploying to Heroku (Paid)</b></summary>
Step-by-step instructions for deploying to Heroku
1. Sign in to Heroku or create a new account at <https://heroku.com>
2. Visit this link to create a new Personal Access Token (no scopes required)
3. Scroll to the bottom and click "Generate token"
4. Click the Deploy button below
[ [][herokudeploy]
5. Add the token as a Config Var with the key TOKEN:
6. (Optional) You can also set the WHITELIST Config Var to restrict which GitHub usernames can be accessed through the service. Provide the usernames as a comma-separated list, for example: user1,user2,user3. If the variable is not set, information can be requested for any GitHub user.
7. Click "Deploy App" at the end of the form
8. Once the app is deployed, you can use <your-app-name>.herokuapp.com in place of streak-stats.demolab.com
</details>
Deploy on your own
You can transfer the files to any webserver using FTP or other means, then refer to CONTRIBUTING.md for installation steps.
đŗ Docker
Docker is a great option for self-hosting with full control over your environment. All features are supported including PNG rendering with Inkscape. Expand the instructions below to learn how to deploy with Docker.
<details>
<summary><b>Instructions for deploying with Docker</b></summary>
Step-by-step instructions for deploying with Docker
1. Clone the repository:
git clone https://github.com/DenverCoder1/github-readme-streak-stats.git
cd github-readme-streak-stats2. Visit https://github.com/settings/tokens/new?description=GitHub%20Readme%20Streak%20Stats to create a new Personal Access Token (no scopes required)
3. Scroll to the bottom and click "Generate token"
4. Build the Docker image:
docker build -t streak-stats .5. Run the container with your GitHub token:
docker run -d -p 8080:80 -e TOKEN=your_github_token_here streak-stats6. You can also optionally set the WHITELIST environment variable to restrict which GitHub usernames can be accessed through the service. If the WHITELIST variable is not set, information can be requested for any GitHub user.
Provide the usernames as a comma-separated list, for example:
docker run -d -p 8080:80 -e TOKEN=your_github_token_here -e WHITELIST=user1,user2,user3 streak-stats7. Visit http://localhost:8080 to access your self-hosted instance
</details>
[hspace]: https://user-images.githubusercontent.com/20955511/136058102-b79570bc-4912-4369-b664-064a0ada8588.png
[verceldeploy]: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FDenverCoder1%2Fgithub-readme-streak-stats%2Ftree%2Fvercel&env=TOKEN&envDescription=GitHub%20Personal%20Access%20Token%20(no%20scopes%20required)&envLink=https%3A%2F%2Fgithub.com%2Fsettings%2Ftokens%2Fnew%3Fdescription%3DGitHub%2520Readme%2520Streak%2520Stats&project-name=streak-stats&repository-name=github-readme-streak-stats
[herokudeploy]: https://heroku.com/deploy?template=https://github.com/DenverCoder1/github-readme-streak-stats/tree/main
đ¤ Contributing
Contributions are welcome! Feel free to open an issue or submit a pull request if you have a way to improve this project.
Make sure your request is meaningful and you have tested the app locally before submitting a pull request.
Refer to CONTRIBUTING.md for more details on contributing, installing requirements, and running the application.
đââī¸ Support
đ If you like this project, give it a â and share it with friends!
<p align="left">
<a href="https://www.youtube.com/channel/UCipSxT7a3rn81vGLw9lqRkg?sub_confirmation=1"><img alt="Youtube" title="Youtube" src="https://img.shields.io/badge/-Subscribe-red?style=for-the-badge&logo=youtube&logoColor=white"/></a>
<a href="https://github.com/sponsors/DenverCoder1"><img alt="Sponsor with Github" title="Sponsor with Github" src="https://img.shields.io/badge/-Sponsor-ea4aaa?style=for-the-badge&logo=github&logoColor=white"/></a>
</p>
---
Made with â¤ī¸ and PHP
<a href="https://heroku.com/"><img alt="Powered by Heroku" title="Powered by Heroku" src="https://img.shields.io/badge/-Powered%20by%20Heroku-6567a5?style=for-the-badge&logo=heroku&logoColor=white"/></a>
---