Inspiration

"Don't push your homework to public Github repos, this will go against school policy and you'll receive a zero. You're basically enabling cheating!" As CS majors who have large group projects, it is hard for people to manage version control. Even though large schools like Georgia Tech and UPenn offer private repos, not all college students are fortunate enough to have that luxury. What should a student do in this situation, to still get a private repo, but also be able to use the cool tool provided by GitHub on the website?

What it does

Gitcognito is a combination of a command line tool and a chrome extension. Using the command line tool, you set your own encrypting password, and then just start using git as usual. Whenever you push to GitHub, the files, file names, and even commit messages will show up as encrypted gibberish, unreadable for the normal eye. This is why we also have a Chrome extension, which allows anyone with the password to view the code online like its normal code. The only difference for the user is running gcn <command> instead of git <command>.

How we built it

We built the CLI tool using Node.js and created the Chrome extension using React. The CLI tool keeps a hidden local repo with all encrypted files which automatically get modified when the user works on the directory or pulls new changes from the branch. The Chrome extension correctly changes the necessary divs in the frontend and decrypts them for the user.

Challenges we ran into

There is no available API for handling the output of git. For that reason, we had to create special ways of handling the output of normal git, but also somehow parse it to allow users to read the decrypted output. For that, we came up with a special delimiter based algorithm, which allows us to parse the output and modify it before presenting it to the user so that it's just like normal git for everyone.

What's next for Gitcognito

Since this was a hackathon project, there are many things that can be done to improve this. Firstly, we would like to add Github authentication, so that your collaborators on your repo can automatically view the encrypted project after logging into the chrome extension. Another thing we would add would be the ability to correctly handle files that are parsed by Github, like markdown and jpeg.

Share this project:

Updates