I like to occasionally look through the list of who has starred or forked one of my GitHub repos, and I found the process pretty tedious and slow. The lists are shown on GitHub in chronological order, with just the username shown. To see anything about the users themselves, you need to click on their profiles in a new tab-- otherwise the navigation doesn't work well and takes you out of the list of users when you hit the back button.
What I really wanted was to see if any "notable" users had starred or forked a repo. That is, a user with a bunch of their own popular repos, or someone with tons of followers on GitHub because they are well known in the tech world for whatever reason. But there didn't seem to be any easy way to do this other than clicking on a ton of usernames and checking each one manually. So I decided to make this project.
Basically, you give it a link to a public repo on GitHub, and it then goes through each user who has starred or forked the repo, and for each one, it gets various metrics, like the total number of stars received by that user from their own projects, the number of followers they have on GitHub, the number of contributions, etc. It then compiles all this into a score using a simple formula:
function calculateScore(stars, followers, contributions, recentActivity) {
return stars * 2.5 + followers * 2.0 + contributions * 0.1 + recentActivity * 0.1;
}
It then returns a nicely formatted table of these results. This screenshot shows what the output looks like:
https://raw.githubusercontent.com/Dicklesworthstone/most-inf...
In order to deal with GitHub API rate limits (which are pretty strict), it breaks up the users into small groups and tries to get each group separately. It then detects when the rate limit has kicked in and automatically waits until the API allows more requests. It also uses caching with SQLite so that it only needs to download a user's data once (at least until the cached data automatically invalidates after 20 hours), so if you want to look up a couple different repos, as long as there is decent overlap in the users who have starred/forked each of the repos, it can avoid a lot of requests and get the data from the cache instead. I also built in the ability for the user to securely specify their own Github API key (this stays in the user's own browser and is never sent to the backend).
It's also fully open source:
https://github.com/Dicklesworthstone/most-influential-github...
So it's easy enough to spin up on a spare machine and try yourself. But to make it easier for people to try, I hosted it myself at:
https://influential-stars.com/
This is just using my own personal GitHub API key and is running on a somewhat modest VPS instance with 10 cores, so if this becomes popular, it's probably going to melt down pretty fast. If anyone who works at GitHub/Microsoft is reading this, I would love to get a higher rate limit for this project or some special API key I can use for it, since I think this is a pretty useful tool for people who make open source software and want to better understand their user base, and most people aren't going to want to spin up their own version just to use it.
As an aside, this is one of the first applications I've made using NextJS (I mostly use Python and vanilla JS), and I have to say that I found it pretty nice to work with and easy to make something that looks pretty slick. I'll certainly consider NextJS for future projects.