Skip to content

Repository files navigation

OpenIM Repository Health

Daily, auditable triage reports for selected public repositories in the openimsdk organization, implemented as a Next.js service on Vercel.

The report distinguishes repository/API failures from real zero values and tracks:

  • every open Issue, its complete public discussion, labels, assignees, waiting time, maintainer response status, and deterministic attention reason;
  • every open pull request, reviews, checks, CI result, draft state, and staleness;
  • twice-daily additions, follow-ups, closures, merges, and persistent backlog;
  • per-repository totals and full historical snapshots;
  • a concise OpenIM group notification linking to the complete report.

Architecture

Vercel Cron calls protected morning and evening routes every day at 09:00 and 17:00 Asia/Shanghai. Each run fetches complete public GitHub data, refuses to publish partial scans, stores immutable twice-daily snapshots plus latest.json in Vercel Blob, then sends an OpenIM group notification containing the stable report URL.

The Next.js server component only serializes list and summary fields to the browser. Full Issue discussions, PR reviews, and CI checks load from the item detail API when a row is selected.

Local development

Prerequisites: Node.js 22+ and an authenticated GitHub CLI.

npm install
npm run scan:local
npm test
npm run dev

The local scan uses GITHUB_MONITOR_TOKEN or the current gh auth token. It never writes GitHub data.

Vercel configuration

Connect a public Vercel Blob store and configure these server-side environment variables for Production:

  • GITHUB_MONITOR_TOKEN: fine-grained, read-only access to public repository metadata. Do not use a broad personal token.
  • OPENIM_SECRET: OpenIM server secret used only to obtain a short-lived admin token at send time.
  • CRON_SECRET: random value of at least 16 characters; Vercel supplies it as the cron request bearer token.
  • BLOB_READ_WRITE_TOKEN: injected when the Blob store is connected.
  • REPORT_BASE_URL: optional canonical production URL.

OpenIM endpoint, admin user, group, and sender identifiers are non-secret configuration in config/openim.json.

The cron expressions in vercel.json are UTC and resolve to 09:00 and 17:00 in Asia/Shanghai. Two independent once-daily routes keep the schedule compatible with Vercel Hobby plan interval limits.

Triage semantics

Maintainers are comments or reviews whose GitHub author_association is OWNER, MEMBER, or COLLABORATOR.

  • P1: an external Issue reply in the last 24 hours has no later maintainer response, or a pull request has failing CI.
  • P2: an Issue has no maintainer response for 30 days, or a pull request has no maintainer review.
  • P3: another unanswered Issue, or a pull request inactive for 30 days.
  • P4: no urgent deterministic triage signal.

Reports contain only public GitHub data. Secrets and OpenIM tokens are never written to report artifacts.

About

Daily OpenIMSDK issue and pull request triage reports with OpenIM notifications

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages