DenverCoder1/github-readme-streak-stats
59.2
Adequate · 19 September 2026
5k
lines of production code
PHP
with JavaScript
1
measurement over time
What this system is
This system is a PHP-based tool for generating GitHub profile streak statistics cards in SVG, PNG, or JSON formats. It provides a customizable demo interface for previewing and styling these cards, alongside a command-line script designed to integrate card generation directly into GitHub Actions workflows. The application includes features for file-based caching, user whitelisting, and automated translation progress tracking to support its deployment and maintenance.
Features
Add GitHub Actions card generation script
A new PHP script (bin/generate-card.php) has been added to support generating GitHub profile streak cards within GitHub Actions workflows. The script reads configuration from environment variables (such as TOKEN, INPUT\_OPTIONS, and INPUT\_PATH) or command-line arguments, fetches the relevant statistics, and writes the resulting SVG output to a specified file path. It also integrates with the GitHub Actions output system by writing the output file path to GITHUB\_OUTPUT, allowing subsequent steps to reference the generated card.
bin · high confidence
Add interactive color picker and accordion components to the demo site
The demo site now includes a new color picker widget (jscolor) for selecting colors and an animated accordion component for organizing content. Users can now interactively choose colors within the demo interface and expand/collapse sections with smooth animations, enhancing the usability of the demonstration environment.
src/demo/js · high confidence
Added GitHub Codespaces configuration
Developers can now open the project directly in GitHub Codespaces. A new devcontainer setup provides a pre-configured Ubuntu 24.04 environment with PHP, Composer, and other necessary tools, automatically installing dependencies and configuring environment variables upon creation.
.devcontainer · high confidence
Automated translation progress tracking in README
A new PHP script (\scripts/translation-progress.php\) has been added to automatically calculate and display translation completion percentages for each locale. The script scans the translations file, computes the coverage of key phrases (such as 'Total Contributions' and 'Current Streak'), and updates the README with a table of HTML badges showing the progress for each language, including links to the specific line numbers in the source file.
scripts · high confidence
Introduce file-based caching and user whitelist for stats generation
The \src\ module now includes a file-based caching system (via \src/cache.php\) that stores generated stats for 24 hours to reduce repeated API calls, controlled by the \DISABLE\_CACHE\ environment variable. Additionally, a new whitelist feature (\src/whitelist.php\) restricts stats generation to specific GitHub usernames defined in the \WHITELIST\ environment variable, returning a 403 error for non-whitelisted users.
src · high confidence
Introduction of dark mode support and theme-aware styling for the demo site
The demo site now supports a dark theme, allowing users to toggle between light and dark modes. This is implemented via CSS custom properties in \style.css\ that define distinct color palettes for \:root\ and \\[data-theme="dark"\]\, affecting backgrounds, text, borders, and interactive elements like buttons and inputs. A dedicated \toggle-dark.css\ file introduces a fixed-position toggle button (\.darkmode\) that adapts its appearance to the current theme and repositions for mobile screens. Additionally, the styling ensures consistent font usage, improved mobile responsiveness for property panels, and theme-aware dropdown arrows.
src/demo/css · high confidence
New PHP-based demo site for previewing and customizing streak stats
The demo interface has moved to src/demo and is now served by a new PHP application (index.php, preview.php, icon.svg). Users can now preview generated cards directly in the browser, customize options such as theme, locale, date format, short numbers, card dimensions, and output type (SVG, PNG, JSON), and toggle dark mode. The demo also supports weekly streak mode, excluding specific days, hiding sections, and includes favicons and Google Analytics tracking.
src/demo · high confidence
Repository restructured with Docker support and GitHub Action
The project has been reorganized to support multiple deployment methods. A new Dockerfile and Procfile enable containerized deployment, while a new action.yml file allows the streak stats to be generated directly within GitHub Actions workflows. The application code has been refactored from a single index.php/card.php structure into a src/ directory with a new bin/generate-card.php entry point, and the root README has been updated with comprehensive setup instructions for these new options.
(repo-wide) · high confidence
Test coverage
Added test suite for caching, rendering, and configuration
Added new PHPUnit tests covering the file-based caching system (CacheTest), theme and color parameter handling (OptionsTest), SVG card generation and styling (RenderTest), contribution statistics and streak logic (StatsTest), and locale/translation normalization (TranslationsTest).
tests · high confidence
Dependencies
Project dependencies and tooling configuration updated
The project's dependency manifests have been significantly restructured. The PHP environment now requires PHP 8.2 and the intl extension, utilizing vlucas/phpdotenv ^5.3 for configuration and phpunit ^11 for testing, while replacing the previous guzzlehttp/guzzle and paquettg/php-html-parser dependencies. Additionally, a new Node.js tooling setup has been introduced with package.json and package-lock.json, specifying Node 22.x as the engine and adding prettier ^3.6.2 and @prettier/plugin-php ^0.24.0 as development dependencies for code formatting.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 59.
Lenses
- Code Health 95
- Architecture 100
- Maturity 38
- Readiness 74
- Security 72
Changes since last survey
- 300 commits — 270 feature/other, 30 fixes
By area
- (root) — 160 commits
- src/translations.php — 67 commits
- docs/themes.md — 33 commits
- src/demo — 17 commits
- src/card.php — 5 commits
- .github/workflows — 4 commits
- (repo) — 2 commits
- src/themes.php — 2 commits
- tests/OptionsTest.php — 2 commits
- tests/expected — 2 commits
- docs/faq.md — 1 commit
- scripts/translation-progress.php — 1 commit
- src/generator.php — 1 commit
- src/index.php — 1 commit
- src/stats.php — 1 commit
- src/whitelist.php — 1 commit
Notable commits
- fix: Fix Korean translation: add "를" in "Excluding {days}" (#814)
- fix: Revert "Update package.json"
- fix: Revert "docs: Remove 20.x vercel warning"
- fix: ci: Fix prettier using earlier version (#557)
- fix: fix(demo): Better mobile responsiveness (#493)
- fix: fix(docs): Update docs with nord-aurora theme (#841)
- fix: fix(translations): Bengali ("bn") - add "Excluding {days}" & fix inconsistent translations of "streak" (#793)
- fix: fix: Always return HTTP 200 to display error cards in README (#860) (#871)
- fix: fix: Apply background gradients on error cards (#498)
- fix: fix: Corrected Portuguese translation (#538)
- fix: fix: Fix margin CSS error
- fix: fix: Fixed current streak showing 0 despite having commits today (#903)
- fix: fix: Prevent error when all columns are hidden (#520)
- fix: fix: Reorder ring to be lower than text (#757)
- fix: fix: Replace newline with space when converting SVG to PNG (#605)
- fix: fix: Resolve nullable parameter deprecation issue in PHP 8.4 (#925)
- fix: fix: Update Indonesian for Excluding translation (#785)
- fix: fix: Update Sunda translations (#575)
- fix: fix: Update Sundanese translations (#580)
- fix: fix: Updated Korean for Excluding translation (#607)
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
DenverCoder1/github-readme-streak-stats was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d855de1a23fe45bdda5ffbc28a6d4b80b0f107e1 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.