feat: Native badge engine for repository and service status #103

Open
opened 2026-05-16 13:47:41 +00:00 by jmiller · 0 comments
Owner

Summary

Build a self-hosted badge generation engine as a native MokoGitea feature, eliminating dependency on external services like shields.io.

Priority

Medium

Proposed Design

Native API endpoint at /api/v1/repos/{owner}/{repo}/badge/{type}.svg that generates SVG badges on-the-fly from internal data sources.

Badge Types

Repository Badges

  • Build status (from Actions API � passing/failing/pending)
  • Version (from latest tag or package manifest)
  • License (from repo metadata)
  • Code coverage (from CI artifacts)
  • Dependencies status (from Dependency-Track API)
  • Security score (from Trivy/SBOM data)

Infrastructure Badges

  • Site status (up/down from Prometheus probe_success)
  • Uptime % (from avg_over_time(probe_success[30d]))
  • Joomla version (from joomla_core_version metric)
  • SSL expiry (from probe_ssl_earliest_cert_expiry)

Custom Badges

  • Arbitrary label/value/color via query params
  • Organization-level badge templates
  • Dynamic badges from webhook data

Architecture

  • Built into MokoGitea as a native endpoint (not a separate service)
  • SVG generation on-the-fly (no external dependencies)
  • Caching layer (badge data refreshes every 60s, SVG cached)
  • Public access for public repos, token-required for private repos
  • Compatible with standard Markdown badge syntax: ![badge](https://git.mokoconsulting.tech/api/v1/repos/{owner}/{repo}/badge/{type}.svg)

Data Sources

Badge Source
Build MokoGitea Actions API (last workflow run status)
Version Git tags / package.json / manifest.xml
License Repository metadata
Coverage CI artifact upload (lcov/cobertura)
Dependencies Dependency-Track API
Site status Prometheus query via internal API
Uptime Prometheus range query
Security Trivy scan results

Benefits Over shields.io

  • No external dependency or rate limits
  • Access to private repo data
  • Integration with Prometheus metrics
  • Custom badge types for Moko ecosystem
  • No privacy concerns (data stays on-premise)

Suggested Labels

badges api developer-experience


Authored-by: Moko Consulting

## Summary Build a self-hosted badge generation engine as a native MokoGitea feature, eliminating dependency on external services like shields.io. ## Priority Medium ## Proposed Design Native API endpoint at `/api/v1/repos/{owner}/{repo}/badge/{type}.svg` that generates SVG badges on-the-fly from internal data sources. ## Badge Types ### Repository Badges - Build status (from Actions API � passing/failing/pending) - Version (from latest tag or package manifest) - License (from repo metadata) - Code coverage (from CI artifacts) - Dependencies status (from Dependency-Track API) - Security score (from Trivy/SBOM data) ### Infrastructure Badges - Site status (up/down from Prometheus `probe_success`) - Uptime % (from `avg_over_time(probe_success[30d])`) - Joomla version (from `joomla_core_version` metric) - SSL expiry (from `probe_ssl_earliest_cert_expiry`) ### Custom Badges - Arbitrary label/value/color via query params - Organization-level badge templates - Dynamic badges from webhook data ## Architecture - Built into MokoGitea as a native endpoint (not a separate service) - SVG generation on-the-fly (no external dependencies) - Caching layer (badge data refreshes every 60s, SVG cached) - Public access for public repos, token-required for private repos - Compatible with standard Markdown badge syntax: `![badge](https://git.mokoconsulting.tech/api/v1/repos/{owner}/{repo}/badge/{type}.svg)` ## Data Sources | Badge | Source | |---|---| | Build | MokoGitea Actions API (last workflow run status) | | Version | Git tags / package.json / manifest.xml | | License | Repository metadata | | Coverage | CI artifact upload (lcov/cobertura) | | Dependencies | Dependency-Track API | | Site status | Prometheus query via internal API | | Uptime | Prometheus range query | | Security | Trivy scan results | ## Benefits Over shields.io - No external dependency or rate limits - Access to private repo data - Integration with Prometheus metrics - Custom badge types for Moko ecosystem - No privacy concerns (data stays on-premise) ## Suggested Labels `badges` `api` `developer-experience` --- *Authored-by: Moko Consulting*
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoGitea#103