GitXplorerGitXplorer
e

gh-organizer

public
2 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
61dade30fceebb890d970f4a911451f1b2abc0f5

update fixtures

eelh committed a year ago
Unverified
c52e8605c5e09389cdeffe637fd779a48368fa22

update fixtures

eelh committed a year ago
Unverified
4429432d42927fbbd9ac9725923d4fe343a2db24

update fixtures

eelh committed a year ago
Unverified
2d039b3cd983d4464f02cbdcfbd55541054689e4

handle user and repo with same name in force-graph

eelh committed 2 years ago
Unverified
e34d0bda64b2aa1d33d10f284f5311ba2ef4fc12

update README

eelh committed 2 years ago
Unverified
a33fbfd0a2d65e3d7db721cd0af9f24842e2ffb7

add 2 public orgs as fixtures for demo. orgs chosen that are not too large and projects i admire

eelh committed 2 years ago

README

The README file for this repository.

gh-organizer 📇

Visualize your Github organization or user. gh-organizer can be run on your own private Github org and repos.

I created this because I wanted to understand the history of contributors and repos in my private organizations.

Demo

/members and /repos View

  • All current members of the organization and PR stats
  • All repos and some basic stats
  • Toggle to show or hide non-member contributors (marked with †)
  • Toggle to show or hide forked repos
  • Links

/repo-timeline View

  • Timeline of repos. Bar displays created date to last push date
  • Ordered by created date

/contrib-timeline View

  • Timeline of all contributors. Bar displays first to last merge date
  • Ordered by first merge date

/force-graph View

  • An interactive force graph of contributors to repos they have contributed to

repo timeline force graph force graph

Usage

gh-organizer works by prefetching data from the Github API and serving it from JSON files. Pulling this information is too slow to do realtime and I do not intend to implement kicking off async tasks at the moment.

We fetch that organization information via backend/fetch.ts and store those files in backend/data/

# `npx ts-node fetch.ts <mode> <owner> <fetchers> [<repo-privacy>]`
# `npx ts-node fetch.ts org clojure all`
# 1) mode is either "org" or "user"
# 2) owner is a github org or user to fetch for
# 3) fetchers is a comma-separated list of fetchers to run
#      options: org, members, members-prs, repo-prs, nonmembers, nonmembers-prs, all. if all, run all fetchers
#      example: "org,members"
#      hack: "org" also applies to the "user" mode owner
# 4) repo-privacy is an optional control filter on repo privacy, either "PUBLIC" or "PRIVATE". if unset, will fetch all repos
#
# using janky positional arguments because i dont think flags are easy to use in typscript. sorry
npx ts-node fetch.ts org tlaplus all
# or
make fetch MODE=org OWNER=tlaplus FETCHERS=all REPOPRIVACY=PUBLIC

And then serve it to the front end

make run-backend-dev

make run-frontend-dev
# you can run w/ default fixture files
# includes data from some public orgs that I admire
REACT_APP_USE_FIXTURES=true make run-frontend-dev

TODO

  • Ability to kick off fetching jobs on the fly
  • Host this as a Github app w/ Github auth or OAuth