![alt tag](https://raw.githubusercontent.com/zackharley/QHacks/develop/public/pictures/logoBlack.png)

# What is gitStarted?

GitStarted is a developer tool to help get projects off the ground in no time. When time is of the essence, devs hate losing time to setting up repositories. GitStarted streamlines the repo creation process, quickly adding your frontend tools and backend npm modules.

## Installation

To install:

```
npm install

```

## Usage

To run:

```
gulp

```

## Credits

Created by [Jake Alsemgeest](https://github.com/Jalsemgeest), [Zack Harley](https://github.com/zackharley), [Colin MacLeod](https://github.com/ColinLMacLeod1) and [Andrew Litt](https://github.com/andrewlitt)!

Made with :heart: in Kingston, Ontario for QHacks 2016
## Inspiration

The most important part in any quality conversation is knowledge. Knowledge is what ignites conversation and drive - knowledge is the spark that gets people on their feet to take the first step to change. While we live in a time where we are spoiled by the abundance of accessible information, trying to keep up and consume information from a multitude of sources can give you information indigestion: it can be confusing to extract the most relevant points of a new story.

## What it does

Macaron is a service that allows you to keep track of all the relevant events that happen in the world without combing through a long news feed. When a major event happens in the world, news outlets write articles. Articles are aggregated from multiple sources and uses NLP to condense the information, classify the summary into a topic, extracts some keywords, then presents it to the user in a digestible, bite-sized info page.

## How we built it

Macaron also goes through various social media platforms (twitter at the moment) to perform sentiment analysis to see what the public opinion is on the issue: displayed by the sentiment bar on every event card! We used a lot of Google Cloud Platform to help publish our app.

## What we learned

Macaron also finds the most relevant charities for an event (if applicable) and makes donating to it a super simple process. We think that by adding an easy call-to-action button on an article informing you about an event itself, we'll lower the barrier to everyday charity for the busy modern person.

Our front end was built on NextJS, with a neumorphism inspired design incorporating usable and contemporary UI/UX design.

We used the Tweepy library to scrape twitter for tweets relating to an event, then used NLTK's vader to perform sentiment analysis on each tweet to build a ratio of positive to negative tweets surrounding an event.

We also used MonkeyLearn's API to summarize text, extract keywords and classify the aggregated articles into a topic (Health, Society, Sports etc..) The scripts were all written in python.

The process was super challenging as the scope of our project was way bigger than we anticipated! Between getting rate limited by twitter and the script not running fast enough, we did hit a lot of roadbumps and had to make quick decisions to cut out the elements of the project we didn't or couldn't implement in time.

Overall, however, the experience was really rewarding and we had a lot of fun moving fast and breaking stuff in our 24 hours!
## Inspiration

We are firm believers in the saying "time is money," and one major source of time spent by developers is in the pull request review process. As aspiring software engineers, we aimed to find a way for developers to spend their time more efficiently. From this, we developed a suite of developer tools we call **DevBot**.

## Function

For context, a developer submits a pull request when pushing their changes to production, on which dozens of checks are run to ensure it is up to standard. Often, these checks fail due to simple things such as linting errors or bad tests. Upon failure, they would have to go through the console output, fix what failed locally, and then push those changes remotely.

Our first step is fixing these build failures, upon which **BuildBot** automatically parses the console output for what errors occurred and where. **BuildBot** then generates fixes for these errors and suggests the changes on the pull request for a developer to accept or reject.

Our next tool is **PR Buddy**, which assists developers in the review of pull requests. Upon triggering **PR Buddy** with the command "/prbuddy", it automatically fetches the files changed in the pull request and reviews the code, looking for areas of improvement such as refactoring, efficiency, and error handling. **PR Buddy** then suggests these changes and discusses why it made these decisions in a conversational manner.

Our last tool is **TestBot**, which automatically writes tests for code. When triggered with the "/testbot" command, it looks through all the files changed in the pull request and generates test cases for them if necessary. It then commits these new tests to the pull request branch in files labeled "{file\_name}.test.{file\_extension}".

## Development

**DevBot** is written in JavaScript and bash script. It runs as a Node.js server hosted on Heroku and listens for its event triggers to automatically run its workflows.

## Challenges

The biggest challenge we faced was model hallucinations. We tested models such as GPT-4o, Claude 3.5 Sonnet, and LLama3-70b. Even with highly engineered prompts, these models produced inconsistent outputs when given a prompt and a code snippet.

## Accomplishments

This is our first project purely working on the backend. There were a lot of issues we had never encountered before, but we managed to push through. Consequently, we have achieved a working demo very close to what we expected coming into this hackathon.

## What We Learned

We learned a lot about the pull request review process, as we had to understand every part of it to build our product. In addition, we got very familiar with CI/CD and DevOps workflows, as it is a core part of **DevBot**.

## What's Next for DevBot

We want more compute to fine-tune and deploy our own models that are much better at programming. We also want to expand our product to include other CI platforms to enable more developers to use our product.