dynimage

Dynamic GitHub stat images for README embeds. Animated SVG on Edge. Raster PNG/WebP/AVIF on Node via Skia + Sharp. Drop one URL into an <img> tag — it stays current.

Cards

commits (svg)
/api/<user>/commits.svg edgeCommits in the last year
commits (png)
/api/<user>/commits.png edgeCommits in the last year
streak (svg)
/api/<user>/streak.svg nodejsContribution streak
streak (png)
/api/<user>/streak.png nodejsContribution streak
portrait (png)
/api/<user>/portrait.png nodejsProfile portrait
portrait (webp)
/api/<user>/portrait.webp nodejsProfile portrait
portrait (avif)
/api/<user>/portrait.avif nodejsProfile portrait
text (svg)
/api/<user>/text.svg edgeText
text (png)
/api/<user>/text.png edgeText
metric (svg)
/api/<user>/metric.svg edgeMetric
metric (png)
/api/<user>/metric.png edgeMetric
bar (svg)
/api/<user>/bar.svg edgeProportion bar
bar (png)
/api/<user>/bar.png edgeProportion bar
orbit (svg)
/api/<user>/orbit.svg edgeOrbit — sphere + icosahedron
typing (svg)
/api/<user>/typing.svg edgeTyping speed (nitrotype)
syndicate (svg)
/api/<user>/syndicate.svg edgeRecanon — services CTA
hero (svg)
/api/<user>/hero.svg edgeHero banner — sphere + GitHub + nitrotype
strip (svg)
/api/<user>/strip.svg edgeStats strip
prism (svg)
/api/<user>/prism.svg edgePrism banner — color-shift spectrum
nucleus (svg)
/api/<user>/nucleus.svg edgeNucleus — compact icosahedron + commits
commits-orbit (svg)
/api/<user>/commits-orbit.svg edgeCommits + orbit
typing-orbit (svg)
/api/<user>/typing-orbit.svg edgeTyping speed + orbit

URL shape

/api/<user>/<card>.<format>?<query>

card     commits | streak | portrait | text
format   svg | png | webp | avif      (per card; not all support all)
query    theme=dark|light|ocean|ember|forest|rose
         bg, accent, text, text-muted, gradient, stroke   (hex without #)
         w, h                                              (override size)

For the full machine-readable card catalog (used by the editor):
GET /api/meta

Examples

/api/moefingers/commits.svg
/api/moefingers/commits.png?theme=ocean
/api/moefingers/streak.svg?accent=fb923c
/api/moefingers/portrait.avif?theme=ember&w=900&h=400
/api/anything/text.svg?text=hello&size=48

SVG ↔ raster

SVG output is animated (SMIL pulse rings, accent-sheen sweeps, CSS keyframe entrance) and respects prefers-color-scheme when no themeparam is given — one URL adapts to the viewer's reader. PNG/WebP/AVIF outputs are flat snapshots without animation.

Repo: github.com/moefingers/dynimage