Welcome to Git Voice!
Git voice is a VS Code plugin which uses Voiceflow and Google assistant to execute Git actions remotely from any device using your voice! Increase your productivity and maximize comfort by integrating smart voice assistant features into your workflow.
We saw that there was a lack of user-friendliness in the current Git repository system. This inspired us to make Git commands more accessible with simple inputs to get the same desired effects. Enter Git Voice: An easy way to perform Git actions with simple words and phrases. All processed in an intuitive and convenient interface integrated into Visual Studio Code.
The Voiceflow API was imperative for us to develop this program. Its intuitive platform that enables intuitive and convenient logic flow control voice assistant allowed us to complete this project in such a short span of time. Moreover, HTTP support in the API made it possible for Git Voice to work from any remote location. Our program centers directly around Google Assistant, and Voiceflow allowed us to achieve our goal.
How We Built It
VS Code Plugin
To start, we scaffolded a TypeScript VS Code extension. We then integrated Express.js to listen for requests sent from Voiceflow/the Google Assistant app. Since our local network is not exposed to the cloud Voiceflow API, we integrated ngrok, an HTTP tunneling service, into our plugin to make our VS Code instance accessible from the cloud . When the plugin receives a message from Voiceflow, it runs Git commands specified by the message inside VS Code's working directory.
Google Assistant and Voiceflow
To incorporate Google Assistant into our VS Code Plugin, we used the Voiceflow API to control the logic flow between receiving commands and sending HTTP requests. Depending on the given command, the API would send a HTTP request to the plugin (via the tunnel) and provide or grab information as required.
For the purposes of the hackathon, we only integrated Git commands. However, this plugin can be easily extended to use Google assistant and Voiceflow to automate any VS Code action through voice commands: installing plugins, scaffolding projects, or setting up configuration files. Git is only the beginning; the only limit is your imagination.
Having more lenient language processing on the Voiceflow side would also improve user experience. For example, detecting keywords (such as "pull" or "push) in arbitrary phrases instead of strictly requiring specific utterances would improve user experience. This way, we could potentially combine multiple commands together in single phrases. (ie. "add all files and commit them with message, 'integrated ngrok'")
Persistent Data Storage
This is an important feature for improving the functionality and security of Git Voice. With data persistence (both locally and on the cloud), we can map names of repositories to their directories so that the plugin can perform Git (or potentially other) commands on directories other than the working directory of VS Code (ie. "add all files for Git Voice"). It will also allow us to improve security by implementing per-user authentication.
How To Try
Clone repository from link
git clone https://github.com/teppah/gitvoice
Start VS Code and navigate to the cloned repository.
F5 to enter debugging mode. This should create a new VS Code instance with the extension running. If you get the notification on the bottom right saying that the server has been started, then the extension is working and is listening for HTTP requests from the Voiceflow/Google assistant app.
Navigate to any git repository on the debugging instance and start using the Git Voice app!
NOTE: don't use this on any important repositories as not many security measures have been implemented into this application. It is recommended that you try this app inside a new Git repository
Challenges & What We Learned
Getting used to the voiceflow process with multiple people was a challenge, but we eventually delegated effectively and produced a solid design. Furthermore, figuring out the communication between the plugin and Voiceflow API was an issue that we spent a lot of time figuring out. During the process, we came out with lots of knowledge; some of us became more comfortable working in the back-end with Typescript and Express.js, and others became more familiar with HTTP and related tools, such as ngrok and Postman.