RepoPulse
Documentation

Public API · v1

GitHub Cards

Four live, configurable SVG cards for public GitHub profiles—free and ready for any README.

Quick Start

Paste any of these snippets into your GitHub README:

![Overview](https://repopulse.kubik.gr/api/cards/overview?username=dimitrisnimas)
![Top Languages](https://repopulse.kubik.gr/api/cards/languages?username=dimitrisnimas)
![Contributions](https://repopulse.kubik.gr/api/cards/contributions?username=dimitrisnimas)
![GitHub Streak](https://repopulse.kubik.gr/api/cards/streak?username=dimitrisnimas)

Overview Card

Profile contributions, public repositories, stars, forks, pull requests, commits, followers, and top languages.

https://repopulse.kubik.gr/api/cards/overview?username=dimitrisnimas&theme=github-dark&show_avatar=true

Languages Card

Repository language byte totals with default, compact, and donut layouts. Forks, archived repositories, private repositories, and repositories without language data are excluded.

https://repopulse.kubik.gr/api/cards/languages?username=dimitrisnimas&layout=donut&langs_count=6&exclude=html,css

Languages describe the composition of public repository code, not a developer's expertise.

Contribution Calendar

A UTC-safe yearly calendar with month labels, optional weekdays, total, and intensity legend.

https://repopulse.kubik.gr/api/cards/contributions?username=dimitrisnimas&year=2026&show_legend=true

Contribution Streak

Current streak, longest streak, active days, date ranges, and total contributions.

https://repopulse.kubik.gr/api/cards/streak?username=dimitrisnimas&show_ring=true

Repository Card

A compact public repository summary with description, language, stars, forks, issues, license, topics, and archived/fork/template state. Private and inaccessible repositories return the same generic not-found SVG.

https://repopulse.kubik.gr/api/cards/repository?owner=dimitrisnimas&repo=repository-name&show_topics=true

Developer Profile Card

A public developer identity card with optional avatar, bio, company, location, website domain, public metrics, languages, and GitHub status. RepoPulse never geocodes locations or fetches external websites.

https://repopulse.kubik.gr/api/cards/profile?username=dimitrisnimas&show_avatar=true

Pinned Repositories

Uses the repositories pinned on the user's public GitHub profile—never an approximation based on stars or activity. Supports one or two columns and up to six repositories.

https://repopulse.kubik.gr/api/cards/pinned?username=dimitrisnimas&columns=2&limit=4

Query Parameters

Every card accepts username, theme, width, hide_border, and locale. Booleans accept true, false, 1, and 0.

Languages adds layout, langs_count, exclude, and hide_progress. Contributions adds year, show_total, show_legend, and show_weekdays. Streak adds year and show_ring.

Years are limited to 2008 through the current UTC year. Contribution calendar widths are 500–1000px; other cards support 320–900px.

Data and calculation methodology

Language percentages use byte totals across all owned, non-fork, non-archived public repositories and are rounded to one decimal place. Private repository languages are not included.

Contribution data is limited to what GitHub exposes to the server token. Streaks include all contribution-calendar activity—not only commits. Today counts when active; otherwise an active yesterday preserves the current streak through yesterday. Two inactive days reset it. Dates use UTC to avoid timezone shifts.

Reliability architecture

RepoPulse prefers stale data over broken README images. Requests use timeout-bound retries, a circuit breaker, fresh/stale Redis cache, in-process deduplication, and short distributed locks. GitHub and its README image proxy may cache SVGs after RepoPulse has refreshed them.

A daily Vercel Cron refreshes a bounded list of recently requested cards through the protected internal endpoint. On Hobby, execution is approximate within the configured hour; more frequent schedules require Vercel Pro.

Diagnostics

/api/health reports liveness, /api/readiness reports safe dependency readiness, and /api/status lists operational card types. The internal /api/internal/refresh endpoint requires CRON_SECRET.

GitHub API limitations still apply, Redis is optional locally, and private GitHub data is not supported.