gitAnalyze a user
Rank users by skill
We wanted to build an app that allows for companies to find developers with specific skills. Often it is not sufficient to look at a resume and see who has real exposure in a particular language or framework, so we created a tool to easily search by skill and enjoy quick and visually appealing access to developer's projects.
What it does
On gitAnalyzed, the landing page provides two options: search for a GitHub user by username, or search for a developer with a particular skill. When a user is searched by name, his or her analyzed data is inserted into the database and visually displayed via d3.js, with on-click functions to provide a breakdown of the repositories for that specific language. If interested, a recruiter can also click a specific repository to check out the source code on GitHub. The other option is to search for a developer via a particular skill. This keyword search queries the database for developers with that skill, as well as sorts them to provide a list of the most experienced developers with the given technology. On click of a developer, the user data is visually represented to the recruiter as in option 1.
How I built it
We built this web application using the MEAN stack (MongoDB, Express, AngularJS, NodeJS) on Heroku. We used a MongoDB database to hold the information of every user searched so that we could allow users to "search by skill" later. We used the GitHub API to pull raw data about user repositories and commits, so that we could perform some analysis. We used D3.js for the data visualization (pie chart). We used AngularJS as a front-end framework, and NodeJS with Express for the server-side language. A few of the Node modules we utilized during development: body-parser, HashMap, requests, mongojs.
Challenges I ran into
In order to perform analysis based on individual commits to each repository, we would have had to send N GET requests for every repository, where N is the number of commits. Since we only used basic authentication, our API requests were fairly limited and that was an unfeasible task. Also, it was a challenge to figure out exactly how to represent data in the DB, in order to efficiently query and sort developers by skill. The front-end, since it was built without any templates, was a bit of a challenge to make look how we wanted.
Accomplishments that I'm proud of
We are proud that we started Friday night without any idea how we were going to implement the application, and approximately 30 hours later we have a functioning gitAnalyzer with some real data. We learned how to use several new technologies in a time crunch, and came out with a great-looking and handy tool.
What I learned
We learned how to use D3 with AngularJS, and bring together a lot of different technologies to make a cool and useful web app.
What's next for gitAnalyzed
We would like to add more information to a person's gitAnalyzed profile (like their number of commits per repository, commit messages, stars, etc) and also provide the ability for a developer or company to Log In and create a profile. We could implement a developer being able to specify that he or she is interested in job opportunities, and companies could potentially reach out if interested.