AprilNEA/repobeats

GitHub repository activity, rendered as a fast, embeddable SVG card.

0

stars

8

commits

Rust

primary language

Sep 7, 2026

updated

repobeats.com
analytics
badge
github
github-app
rust
self-hosted
svg

README

Repobeats

GitHub repository activity, rendered as a fast, embeddable SVG card.

Use Repobeats · Customize · Self-host

Repobeats activity card for AprilNEA/OpenLogi

Repobeats is open source and available as a hosted service at repobeats.com. There is no script to install and no image to upload: connect a repository once, then use its SVG URL anywhere Markdown or HTML images are supported.

Quick start

1. Connect a repository

Open the configurator after replacing OWNER and REPOSITORY:

https://repobeats.com/configure?repository=OWNER%2FREPOSITORY

Sign in with GitHub, then choose Public for the predictable OWNER/REPOSITORY card URL or Unlisted for a random embed URL. GitHub will ask you to install the Repobeats GitHub App for that repository. Repobeats verifies that the signed-in account has repository administrator access before saving the connection. The app only requests read access to repository contents, issues, pull requests, and metadata.

2. Add the card to your README

![Repobeats analytics](https://repobeats.com/OWNER/REPOSITORY)

Or use it in HTML:

<img alt="Repobeats analytics" src="https://repobeats.com/OWNER/REPOSITORY">

The first collection may take a moment, especially for active repositories with a long history.

For an Unlisted card, copy the random /api/embed/{id}.svg URL generated by the configurator instead. Unlisted cards are not private or authenticated: anyone with the URL can view them.

Customize your card

Options use familiar badge-style query parameters:

![Repobeats analytics](https://repobeats.com/OWNER/REPOSITORY?theme=dark&size=small&period=90)
ParameterValuesDefault
themelight, darklight
sizesmall (610×239), medium (814×318), large (1221×477)medium
period7, 14, 30, 90, 180, 365 days30

Each metric is compared with the immediately preceding period of the same length. Longer contributor histories are condensed into 30 balanced heatmap cells so every period keeps the same card layout.

What Repobeats shows

  • commits, displayed as Pushes;
  • opened and closed issues;
  • opened and closed pull requests;
  • the five most active contributors for the selected period;
  • changes compared with the preceding period.

Repobeats collects 730 days of activity, retaining two complete 365-day windows for year-over-year comparisons. The hosted service refreshes connected repositories periodically and serves cards with browser/CDN caching and ETag support.

Privacy and GitHub access

  • Repobeats requires GitHub sign-in and repository administrator access before connecting a repository.
  • GitHub permissions are read-only.
  • GitHub user access tokens and installation access tokens are never persisted. User tokens are used only during authorization; GitHub App installation tokens are short-lived and refreshed when needed.
  • The GitHub user ID, login, avatar URL, hashed session token, installation ID, repository-manager relation, and collected activity snapshot are stored. Browser cookies contain only an opaque session token.
  • Public cards are available at the predictable owner/repository URL. Unlisted cards disable that URL and use only a random embed URL, but anyone with the link can still view them. Neither mode provides an authenticated private card.

HTTP API

EndpointDescription
GET https://repobeats.com/auth/github/loginSign in with the Repobeats GitHub App
GET https://repobeats.com/dashboardList repositories verified for the signed-in user
GET https://repobeats.com/auth/github?repository=OWNER%2FREPOSITORY&visibility=publicConnect a repository through the GitHub App; visibility is public by default or unlisted
GET https://repobeats.com/{owner}/{repository}Render the latest Public SVG card
GET https://repobeats.com/api/embed/{id}.svgRender a card by its random embed ID

An unconnected repository returns 401 JSON with an authorize_url. The owner/repository route returns 404 for an Unlisted card. A connected repository awaiting its first snapshot returns 503, and an unknown embed ID returns 404. SVG responses include an ETag; a matching If-None-Match receives 304 Not Modified.

Self-hosting

The hosted service is the recommended way to use Repobeats. If you need your own GitHub App, database, cache, retention boundary, or domain, see the dedicated self-hosting guide.

Repobeats supports SQLite for simple single-instance deployments, PostgreSQL for production storage, and an optional Redis render cache.

Development

Repobeats is a Rust 2024 project built with Axum, Octocrab, SeaORM, Figment, Moka, and the svg crate.

cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test
cargo build --release --locked

The main subsystems are separated into src/app, src/github, and src/card; persistence and activity windows live in src/store.rs and src/model.rs. Integration tests are under tests/.

Issues and pull requests are welcome.

License

Repobeats is available under the MIT License.

This project is a clean-room implementation and is not affiliated with Axiom.

Contributors

AprilNEA

8 commits

AprilNEA/repobeats

GitHub repository activity, rendered as a fast, embeddable SVG card.

0

stars

8

commits

Rust

primary language

Sep 7, 2026

updated

repobeats.com
analytics
badge
github
github-app
rust
self-hosted
svg

README

Repobeats

GitHub repository activity, rendered as a fast, embeddable SVG card.

Use Repobeats · Customize · Self-host

Repobeats activity card for AprilNEA/OpenLogi

Repobeats is open source and available as a hosted service at repobeats.com. There is no script to install and no image to upload: connect a repository once, then use its SVG URL anywhere Markdown or HTML images are supported.

Quick start

1. Connect a repository

Open the configurator after replacing OWNER and REPOSITORY:

https://repobeats.com/configure?repository=OWNER%2FREPOSITORY

Sign in with GitHub, then choose Public for the predictable OWNER/REPOSITORY card URL or Unlisted for a random embed URL. GitHub will ask you to install the Repobeats GitHub App for that repository. Repobeats verifies that the signed-in account has repository administrator access before saving the connection. The app only requests read access to repository contents, issues, pull requests, and metadata.

2. Add the card to your README

![Repobeats analytics](https://repobeats.com/OWNER/REPOSITORY)

Or use it in HTML:

<img alt="Repobeats analytics" src="https://repobeats.com/OWNER/REPOSITORY">

The first collection may take a moment, especially for active repositories with a long history.

For an Unlisted card, copy the random /api/embed/{id}.svg URL generated by the configurator instead. Unlisted cards are not private or authenticated: anyone with the URL can view them.

Customize your card

Options use familiar badge-style query parameters:

![Repobeats analytics](https://repobeats.com/OWNER/REPOSITORY?theme=dark&size=small&period=90)
ParameterValuesDefault
themelight, darklight
sizesmall (610×239), medium (814×318), large (1221×477)medium
period7, 14, 30, 90, 180, 365 days30

Each metric is compared with the immediately preceding period of the same length. Longer contributor histories are condensed into 30 balanced heatmap cells so every period keeps the same card layout.

What Repobeats shows

  • commits, displayed as Pushes;
  • opened and closed issues;
  • opened and closed pull requests;
  • the five most active contributors for the selected period;
  • changes compared with the preceding period.

Repobeats collects 730 days of activity, retaining two complete 365-day windows for year-over-year comparisons. The hosted service refreshes connected repositories periodically and serves cards with browser/CDN caching and ETag support.

Privacy and GitHub access

  • Repobeats requires GitHub sign-in and repository administrator access before connecting a repository.
  • GitHub permissions are read-only.
  • GitHub user access tokens and installation access tokens are never persisted. User tokens are used only during authorization; GitHub App installation tokens are short-lived and refreshed when needed.
  • The GitHub user ID, login, avatar URL, hashed session token, installation ID, repository-manager relation, and collected activity snapshot are stored. Browser cookies contain only an opaque session token.
  • Public cards are available at the predictable owner/repository URL. Unlisted cards disable that URL and use only a random embed URL, but anyone with the link can still view them. Neither mode provides an authenticated private card.

HTTP API

EndpointDescription
GET https://repobeats.com/auth/github/loginSign in with the Repobeats GitHub App
GET https://repobeats.com/dashboardList repositories verified for the signed-in user
GET https://repobeats.com/auth/github?repository=OWNER%2FREPOSITORY&visibility=publicConnect a repository through the GitHub App; visibility is public by default or unlisted
GET https://repobeats.com/{owner}/{repository}Render the latest Public SVG card
GET https://repobeats.com/api/embed/{id}.svgRender a card by its random embed ID

An unconnected repository returns 401 JSON with an authorize_url. The owner/repository route returns 404 for an Unlisted card. A connected repository awaiting its first snapshot returns 503, and an unknown embed ID returns 404. SVG responses include an ETag; a matching If-None-Match receives 304 Not Modified.

Self-hosting

The hosted service is the recommended way to use Repobeats. If you need your own GitHub App, database, cache, retention boundary, or domain, see the dedicated self-hosting guide.

Repobeats supports SQLite for simple single-instance deployments, PostgreSQL for production storage, and an optional Redis render cache.

Development

Repobeats is a Rust 2024 project built with Axum, Octocrab, SeaORM, Figment, Moka, and the svg crate.

cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test
cargo build --release --locked

The main subsystems are separated into src/app, src/github, and src/card; persistence and activity windows live in src/store.rs and src/model.rs. Integration tests are under tests/.

Issues and pull requests are welcome.

License

Repobeats is available under the MIT License.

This project is a clean-room implementation and is not affiliated with Axiom.

Contributors

AprilNEA

8 commits

Languages

Rust

88.5%

HTML

5.8%

CSS

5.2%