I like to check out different projects on github, so it's a given that at some point I had to automate the tedious task of cloning the repo and opening in vs code. So as any good dev I started out with the goal of automating it. A browser extension to clone and opening project was my inital goal, but while developing it and discussing with others I saw a much more greater potential in it. So it's aim shifted from being a mere workflow automation to a Browser Based Git Client. The main reason were that, for non coders( designers or non developers) using git cli or github desktop is way too hard to get their basic work done, which mainly just involves cloning a repo, adding some files and pushing them to github. So yeah, that was my main inspiration for this project.
What it does
It does basic git operations from browser extension.
- Git Clone
- Git Commit
- Git Push
- Open VS Code
How I built it
I built a cross browser extension it can run on various browsers like chrome, mozilla, etc. For the UI part I used React, Typescript, and the bundle build is handled by webpack with hotreload for development. The Service program which runs on the client device to perform various git operation is written in golang, it interacts with the shell to perform the operations.
Challenges I ran into
- I started the web browser extension with a starter project but faced issues for importing image assets in it, so I decided to add the feature as it was missing in the project. I will submit the PR when this hackathon ends.
- I had to create a basic rest api to handle post api calls and guess what I didn't find any good project with the native net/http package, so I had to figure out from different places.
- How to interact with the git from golang, for this I initially used the go-git package, but later realized it not to be suitable for me and did it by interacting with shell from golang with os.exec()
Accomplishments that I'm proud of
- This was my first time working with typescript and golang, so there was lot's of blogs and code to read and understand.
- Setting up development environment with typescript esling and prettier.
- made my first browser extension with typescript and golang project.
What I learned
- Learned a lot about background processes, typescript, webpack and golang.
What's next for gitify
- convert the server into cross platform os service.