Inspiration
We, like many software developers who love building independent projects, want to share our coding experience with potential employers. However, with some projects containing sensitive or monetized code, it isn't always possible to publish our source code as a public repository on our GitHub, so we created this solution to give access only to people with a specific link.
What it does
Users authorize our service to view their private repositories, and they can create shareable links for individual repositories through the dashboard on our website. Then, anyone with the link can view the files in that repository through our online file explorer.
How we built it
The technologies used were Next.js, React.js, TailwindCSS, MongoDB, and Express. We used Prismjs for syntax highlighting of the files within the explorer, and created the explorer ourselves by parsing the GitHub repository into a file tree and implementing a clean and intuitive way to navigate through the source code.
Challenges we ran into
GitHub integration was difficult, as they send the API result in an encoded format that is hard to parse into regular plain text. Also, they don't send all the information about the file tree in one response, they only send one level of the tree per request, so we need to do some recursion to construct the internal tree model.
Accomplishments that we're proud of
We are proud of creating the sleek file explorer and the dashboard, as well as creating an easy to use internal representation of the GitHub repositories, and connecting custom hashes to all the repositories so the URLs aren't guessable and only people who are given the URLs will be able to access the repository.
What we learned
We learned about the intricacies of cloud databases like MongoDB and GitHub, how to effectively cache results so as not to overwhelm the respective APIs. Also, we extensively developed our skills in front end development.
What's next for GitShare
Currently, users don't have a dashboard to create links to their own private repositories. While the technology is there and we have demonstrated on a few limited users, we just didn't have the time to integrate the dashboard and general user authorization system for any arbitrary user without a proper server and database setup. You can still view the repositories that links have already been created for.
Log in or sign up for Devpost to join the conversation.