All Projects → vdaubry → Github Awards

vdaubry / Github Awards

Licence: mit
Discover your ranking on github :

Programming Languages

ruby
36898 projects - #4 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to Github Awards

Newbe.mahua.framework
本SDK为实现QQ机器人平台的大一统,支持多种机器人平台:酷Q、MyPCQQ、QQLight等
Stars: ✭ 849 (-45.68%)
Mutual labels:  star
Laravel Reactions
Laravel reactions package for implementing reactions (eg: like, dislike, love, emotion, etc) on Eloquent models.
Stars: ✭ 58 (-96.29%)
Mutual labels:  star
Hacktoberfest
Make your first PR! ~ A beginner-friendly repository made specifically for open source beginners. Add your profile, a blog, or any program under any language or update the existing one. Just make sure to add the file under the correct directory. Happy hacking!
Stars: ✭ 78 (-95.01%)
Mutual labels:  star
Sa Token
这可能是史上功能最全的Java权限认证框架!目前已集成——登录验证、权限验证、Session会话、踢人下线、分布式会话、单点登录、OAuth2.0、记住我模式、模拟他人账号、临时身份切换、集成Redis、多账号认证体系、前后台分离模式、注解式鉴权、路由拦截式鉴权、花式token生成、自动续签、同端互斥登录、会话治理、密码加密、jwt集成、Spring集成...
Stars: ✭ 935 (-40.18%)
Mutual labels:  star
Nasa Cli
🚀 Download NASA Picture of the Day from your terminal!
Stars: ✭ 45 (-97.12%)
Mutual labels:  star
Starhub
All about your Github account, public and private activity, watch stars, followers and much more.
Stars: ✭ 60 (-96.16%)
Mutual labels:  star
Laravel Love
Add Social Reactions to Laravel Eloquent Models. It lets people express how they feel about the content. Fully customizable Weighted Reaction System & Reaction Type System with Like, Dislike and any other custom emotion types. Do you react?
Stars: ✭ 822 (-47.41%)
Mutual labels:  star
Android Ratingreviews
Simple star rating system bars, a view similar to the ones seen on Google Playstore. ⭐🌟✨
Stars: ✭ 110 (-92.96%)
Mutual labels:  star
Yii2 Widget Rating
A Yii2 widget for the simple yet powerful bootstrap-star-rating plugin with fractional rating support (sub repo split from yii2-widgets)
Stars: ✭ 47 (-96.99%)
Mutual labels:  star
Github Badges
Star / Fork badges for your GitHub Repository!
Stars: ✭ 76 (-95.14%)
Mutual labels:  star
Bootstrap Star Rating
A simple yet powerful JQuery star rating plugin with fractional rating support.
Stars: ✭ 985 (-36.98%)
Mutual labels:  star
Rule Engine Front
🔥 🔥 🔥 📌 规则引擎前端 📌 RuleEngine 基于web可视化配置,简单高效快捷。
Stars: ✭ 40 (-97.44%)
Mutual labels:  star
Starmark
Turn your GitHub stars into Chrome bookmarks
Stars: ✭ 60 (-96.16%)
Mutual labels:  star
Awesomstar
Awesome (star)rating system with PHP, MySQL and pure JavaScript.
Stars: ✭ 15 (-99.04%)
Mutual labels:  star
Nanomatch
Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but without support for extended globs (extglobs), posix brackets or braces, and with complete Bash 4.3 wildcard support: ("*", "**", and "?").
Stars: ✭ 79 (-94.95%)
Mutual labels:  star
Vue Star Plus
升级版 vue-star
Stars: ✭ 25 (-98.4%)
Mutual labels:  star
Portfolio
Create a beautiful Portfolio using GitHub pages
Stars: ✭ 59 (-96.23%)
Mutual labels:  star
Dropseqpipe
A SingleCell RNASeq pre-processing snakemake workflow
Stars: ✭ 119 (-92.39%)
Mutual labels:  star
Starrate
swift电商五星评价,星星评分控件,支持自定义数量、拖拽、间隔、设置最小星星数等操作
Stars: ✭ 85 (-94.56%)
Mutual labels:  star
Mgstarratingview
MGStarRatingView is a view for rating.
Stars: ✭ 70 (-95.52%)
Mutual labels:  star

Build Status Help Contribute to Open Source

Important notice : Github Awards becomes Git Awards !

Git Awards

Git Awards gives your ranking on GitHub by language and by location (city, country and worldwide) based on the number of stars on your repos.

How does it work ?

In order to calculate your ranking on GitHub we:

  • Get all GitHub users with their location
  • Geocode their location
  • Get all GitHub repositories with language and number of stars

With this information we are able to compute your ranking for a given language in a given city.

Step 1 : Get all users and repositories

There are over 10 Millions users and 15 Millions repositories on GitHub, we cannot just call the GitHub API for each user and his repos.

However the GitHub list API returns 100 results at a time with basic information :

With this one can get up to 500k user / repo per hour : this is enough to get the entire list of users and repositories with basic informations (username, repo name, etc).

Rake tasks are :

rake user:crawl
rake repo:crawl

Now we need to get detailed informations such as location, language, number of stars.

Step 2 : Use Google Big Query to get details about active users and repositories

GitHub Archive is a project to record the public GitHub timeline, archive it, and make it easily accessible for further analysis.

The GitHub Archive dataset is public, with Google Big Query we can filter the dataset to get only the latest event for each repo and users. Unfortunatly the GitHub Archives events starts from 2011, so we won't get ranking informations for users and repos that have been inactive since 2011.

  • Request for users :

users.sql

  • Request for repositories :

repos.sql

We can then download the results as JSON, parse the result, and fill missing information about users and repos.

Rake tasks are :

rake user:parse_users
rake repo:parse_repos

We now have the users location, and repositories language and number of stars. In order to get country and world rank we need to geocode user locations

Step 3 : Geocoding user locations

Location on GitHub is a plain text field, there are about 1 million profiles with location on GitHub. Free geocoding APIs usually have a hard rate limiting. First step is to geocode only distinct location, which leaves about 100k locations to geocode. A solution to speed up the geocoding is to use a combination of :

Rake task is :

rake user:geocode_locations

We now have all the information we need to compute ranking.

Step 4 : Compute rankings by language and by location (city/country/world)

To get rankings we first calculate a score for each user in each language using this formula :

sum(stars) + (1.0 - 1.0/count(repositories))

Then we use Postgres ROW_NUMBER() function to get ranks compared to other developers with repositories in the same languages, in the same location (by city, by country or worldwide).

Ok, now we have all GitHub users' ranking :)

In order to speed up queries based on user ranks, we create a table with all rankings information. Once we have all rankings informations on a single table we can properly index it, we get acceptable response time when we query it from a web application.

The query to create the language_rankings table can be found here :

rank.sql

Step 5 : VOILA ! Look for your ranking and have fun :)

Next steps :

  • Github connect
  • Manually refresh your informations
  • Automating data update
  • Improve UI

Contributing :

  • Fork it https://github.com/vdaubry/github-awards/fork
  • Create your feature branch git checkout -b my-new-feature
  • Commit your changes git commit -am 'Add some feature'
  • Push to the branch git push origin my-new-feature
  • Create a new Pull Request

License

This project is available under the MIT license. See the license file for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].