Skip to content
CAI
Software that uses CAICheck a score

DenverCoder1/github-readme-streak-stats

59.2

Adequate · 19 September 2026

5k

lines of production code

PHP

with JavaScript

1

measurement over time

CAI band scale
CAI lens gauges

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.