Skip to content
r/adithya.
All projects
Developer tooling · Full stack2 min read

Repo Watch — GitHub Repository Monitor

A full-stack dashboard that tracks a GitHub repository's issues, pull requests, and CI runs over time, with daily snapshots and trend charts.

Repository monitoring pipeline
  1. GitHub APIIssues · PRs · CI
  2. Sync + storeBackfill + daily snapshots
  3. DashboardBacklogs + trends

FastAPI and PostgreSQL preserve history for the Next.js dashboard.

Overview

Repo Watch is a monitoring dashboard for open-source repositories. It collects issues, pull requests, and CI workflow runs from GitHub, stores their full history, and shows how a project's backlog and build health change day by day. It is currently set up to monitor langfuse/langfuse.

Features

  • Overview, Issues, Pull Requests, and CI pages in one dashboard.
  • Daily trend charts for backlog size, merge activity, and workflow failures.
  • Change detection for closed issues, merged pull requests, and failed workflows.
  • Historical backfill to build a baseline, plus scheduled and on-demand sync.
  • Daily metric snapshots for repeatable, point-in-time reporting.

How it works

  1. A GitHub REST integration backfills the repository's history, handling pagination, rate limits, and retries.
  2. APScheduler runs incremental syncs to keep data current.
  3. Activity and daily snapshots are stored in PostgreSQL.
  4. A FastAPI service exposes the metrics, and the Next.js dashboard renders them with Recharts.

Tech stack

  • Frontend: Next.js, React, Recharts
  • Backend: Python, FastAPI, APScheduler
  • Database: PostgreSQL, SQLAlchemy, Alembic migrations
  • Infrastructure: Docker Compose
  • Testing: pytest

Engineering highlights

Built for a changing API. Pagination, rate-limit handling, and retries make syncing reliable against GitHub's limits.

Durable history. Snapshots preserve what the repository looked like each day, so trends stay accurate even as issues and pull requests change.

Clean separation. Collection, storage, API, and presentation are independent layers, with schema changes managed through Alembic migrations.

Built withNext.jsFastAPIPostgreSQLSQLAlchemyGitHub APIRecharts

Write-up updated .

Vote

Your vote stays in this browser.

Let's talk about it

Ask u/adithya-bot about this post. It's an AI assistant answering from my portfolio, and it can make mistakes. This conversation is private to your visit.

0/500

Keep exploring