Skip to content

Repository files navigation

RepoGraph logo

RepoGraph

Paste in any public GitHub repo and get a readable map of how its issues, PRs, and people link together.

I started this because digging through a new repo usually means opening 20 tabs and still not knowing who worked on what with whom. GitHub has all the pieces, it just doesn't show the connections. That's what this tries to fix.

CI License Issues

Org: github.com/RepoGraphs


What it does

Say you open facebook/react and want context on one issue. Instead of grepping bodies and timelines by hand, you pick a focus like issue:123 and get a small graph around it:

  • who opened it, who is assigned
  • which PRs mention or close it, and who reviewed them
  • what else got referenced along the way

Every edge shows where it came from with a link back to GitHub, so you can verify it yourself. If something is inferred from a keyword like "fixes #123", it says so instead of pretending it's certain.

A couple of ground rules the app enforces to stay readable:

  • you always need a focus (an issue, PR, or user)
  • depth maxes out at 2, node limit at 400
  • big repos load progressively with a queue and cache, not all at once

All numbers you see (stars, issue counts, etc.) come live from the GitHub API. There's no hardcoded stats in the app. The only static list is a few example repos on the landing page for one-click trying, and the DB seed is just local sample data for development.

Running it

You need Node 20+, pnpm 9+, and a GitHub token. Docker makes life easier.

git clone https://github.com/RepoGraphs/repograph.git
cd repograph
cp .env.example .env
# open .env and set GITHUB_TOKEN to your token
docker compose up

That gives you:

Without Docker, you'll need Postgres 16 and Redis 7 running locally, then:

pnpm install
pnpm db:generate && pnpm db:migrate
pnpm dev

pnpm dev:web and pnpm dev:api run them separately if you only need one side.

Example flow once it's up: paste https://github.com/facebook/react, hit Explore, open an issue, expand to the linked PR and its reviewers. The URL keeps ?focus=issue:123&depth=1 so you can share exactly what you're looking at.

How it's put together

repograph/
├── apps/web   # Next.js frontend, landing + repo pages + graph view (XYFlow)
├── apps/api   # NestJS backend, GitHub fetching, ingestion queue, graph endpoints
├── packages/
│   ├── graph-model          # shared types, no runtime code
│   ├── github-client        # GitHub API wrapper with token pool and caching
│   ├── relationship-engine  # turns GitHub data into edges, one file per rule
│   ├── db                   # Prisma schema and migrations
│   ├── config               # eslint / tsconfig / tailwind presets
│   └── ui                   # small shared components
├── ee/          # paid extras, separate license
└── docs/        # extra notes (MCP, private repos)

More detail is in ARCHITECTURE.md if you want the full contracts.

Config

The main ones in .env:

  • GITHUB_TOKEN — required for anything live. A read-only fine-grained token is fine.
  • DATABASE_URL, REDIS_URL — defaults point at localhost.
  • RATE_LIMIT_MAX_GRAPHS_PER_DAY_PER_IP — defaults to 3 for anonymous use.
  • CACHE_GRAPH_TTL_SECONDS — how long subgraphs are cached, default 600.
  • INGESTION_MAX_REQUESTS_PER_REPO — API budget per repo, default 5000.

Full list is in .env.example. Don't commit your .env, it's already gitignored.

API

Basic shape, all JSON:

POST /repositories/resolve
{ "url": "https://github.com/facebook/react" }

GET /repositories/:id/status

GET /repositories/:id/graph?focus=issue:123&depth=1&timeWindow=30d&limit=300
# focus is required, depth 1-2, limit 1-400, timeWindow 7d/30d/90d/all

POST /repositories/:id/graph/expand
{ "nodeId": "issue:facebook/react:123", "depth": 1 }

GET /badge/:owner/:repo.svg
# small embeddable badge, cached about an hour

Contributing

PRs welcome. Read CONTRIBUTING.md first, it has the setup and the few rules I care about (types stay pure, one file per relationship rule, no hardcoded metrics).

Quick check before you push:

pnpm lint && pnpm typecheck && pnpm test

Security

If you find a vulnerability, don't open a public issue. Email security@repograph.dev or use a private GitHub advisory. More in SECURITY.md.

License

Core (apps/, packages/) is AGPL-3.0, see LICENSE. Stuff under ee/ is commercial, see ee/LICENSE. Name and logo are ours, see TRADEMARK.md.

Thanks

Built with Next.js, NestJS, Prisma, Redis, BullMQ, XYFlow, and Tailwind. Inspired by tools like DeepWiki and GitLens, just focused on a different problem: how the work flowed, not what the code does.

Maintained under RepoGraphs. If it helped you, a star is appreciated.

About

RepoGraph — Visual context graph for GitHub. Paste any repo, see how Issues, PRs and people connect.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages