svycal/og-image
46.2
Weak · 3 October 2026
1.3k
lines of production code
Elixir
with JavaScript
2
measurements over time
What this system is
This system is an Elixir-based service that generates Open Graph images using Puppeteer, with a primary focus on performance optimization through local image caching. It implements a directory-backed cache with FIFO eviction to store generated images, ensuring bounded disk usage and safe concurrent access. The infrastructure has been updated to support Node.js 22 and includes comprehensive testing for the caching logic.
Features
Added local image cache with FIFO eviction
A new directory-backed cache module has been introduced to store generated images locally on the BEAM node. This cache enforces a maximum byte capacity using a First-In-First-Out (FIFO) eviction strategy based on file modification time, ensuring that disk usage remains bounded. It supports atomic writes via temporary files and uses a non-blocking ETS-based lock to handle concurrent access safely within a single node.
_lib/og\image · high confidence
Behavioural changes
Added image generation caching
The image rendering process now supports caching to improve performance. When enabled via configuration, generated images are stored in a temporary directory and served from cache for subsequent identical requests, with a configurable maximum cache size of 50 MB. This change also includes minor formatting updates to the layout and home page templates.
_config, lib/og\_image\web · high confidence
Node.js upgrade and caching support
The Dockerfile now installs Node.js 22.x instead of 18.x and removes the global npm upgrade step. Additionally, the application now supports image caching, which can be configured via the :og\_image, :image\_cache configuration options to control cache size, enable/disable status, and versioning for invalidation.
(repo-wide) · high confidence
Test coverage
Added tests for the image caching module
Added comprehensive test coverage for the \OgImage.ImageCache\ module, verifying core caching behaviors including storing and retrieving data, handling custom file extensions, ensuring consistent filenames for identical keys, enforcing storage capacity limits by evicting oldest files, and correctly handling edge cases such as non-existent keys, directories, and hidden temporary files.
test · high confidence
Dependencies
Dependency upgrades and tooling additions
The project now requires Node.js 22 or later and upgrades puppeteer-core to version 24.x, which resolves security advisories. Additionally, the Credo static analysis tool has been added as a development dependency for Elixir code quality checks, and the git shallow clone depth for the heroicons dependency has been set to 1 to optimize build performance.
(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
Score
- CAI 45 → 46 (+1.2)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 66 → 66 (+0.0)
- Readiness 18 → 19 (+0.9)
- Security 84 → 86 (+1.6)
- Accessibility 64 → 64 (+0.0)
- Performance 100 (new)
Resolved (2)
- Documentation: no architecture or design documentation (README.md)
- Documentation: no usage examples (README.md)
New (1)
- High CVE: [GHSA redacted] (priv/js/package-lock.json)
Changes since last survey
- 1 commits — 1 feature/other, 0 fixes
By area
- priv/js — 1 commit
Notable commits
- change: Bump ip-address from 10.4.0 to 10.7.2 in /priv/js (#8)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
svycal/og-image 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 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 9541b22a2e06f3a9d1d7feb680f9b67f567ed12f — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-24c657e50118.