Inspiration
Between all of our ideas in the brainstorming process, the common thread was the desire to build a web app on React to better understand the library. As we thought about what we wanted to emphasize in our project, we flashed back to the career fair and realized that we all shared difficulties in listing our projects professionally on our resume. In fact, much of the freshman class often posed the question, “How do I word this to showcase my skills?”. From here, the idea for GitMe, an application that assists in this endeavor, was born.
What it does
Our project has a couple different pieces of functionality. The user can enter their Github repo link to have it summarized down to a couple bullet points while also having the option to add some technical flair so the experience can be added to a resume. They can also use the website to improve their Github profile.
How we built it
We built the frontend of our application mainly in JavaScript/React. The frontend involved linking the three different blocks of our site to three different web pages, all of which needed their own UI. Once a button was clicked, the user would be prompted to enter information into a web form which would be sent to the backend. The backend of our application was written purely in Python because of our group’s experience in the language and for ease of syntax. The repo info would be acquired using the Github API, allowing us to make requests with the user’s specific github link.
This info would then be passed into ChatGPT in JSON representation (because ChatGPT cannot open or read files). We went through multiple iterations of our prompt until it was designed such that the model's response would be clear, targeted, and concise. ChatGPT's response would be fetched and returned as a key-value pair (string: "string", repo: "repo-name") which we could then display to the user as an improved version of their project README and description.
Challenges we ran into
First and foremost, learning the syntax and structures of React was quite a challenge, especially considering the majority of our group did not have JavaScript experience. We tackled this problem by bouncing ideas off of each other and googling when absolutely necessary.
One challenge we faced was making sure GitMe’s API ran at an optimal speed. We were able to resolve the issue by utilizing Asyncio, Python’s asynchronous threading library. Using that, we were able to make thousands of requests to fetch the contents of many repositories at the same time.
Merge conflicts caught up to us towards the end of our project because we occasionally forgot to ‘git pull’ after a group member pushed code, making us have to manually go through and compare what code we needed and didn’t need. There was no easy fix for this besides better communication for what we were individually doing as a team and brute forcing things when it came to a conflict.
Finally, arguably the “easiest challenge” we faced during this project was hashing out issues with CSS. There were many resources online to debug and oftentimes the issues we faced were not conceptual but rather syntactical.
Accomplishments that we're proud of
As a team, we’re most proud of our overall persistence. For this hackathon, we had to learn enough React in the moment to make a working full stack application. There were so many errors that, at least to us, didn’t make sense and were difficult to actually diagnose. Even in HTML/CSS, the language with which we are most familiar, we ran into alignment issues, crashes, code blocks being dysfunctional, etc. All throughout this project we were able to stick to it and be persistent in our pursuit of knowledge, coming out the other end with an amazingly designed project to show for it.
What we learned
For most of our team, this was our first time developing a full web-based application through React. Those of us that didn’t know much about HTML and CSS before gained invaluable experience developing the front end of our site, greatly expanding our knowledge base and improving our efficacy in these languages. Through using React, we also gained experience with cloud computing and communicating between different programming languages through an endpoint. Lastly, we accrued experience in version control by using GitHub to manage the project and work on it at the same time. This undoubtedly set the foundation for our future careers because GitHub is so widely used by software engineers. This project was a huge leap out of our comfort zone. There were many things that we didn’t understand when we began, and we worked with languages and frameworks that we’ve never worked with before. It was difficult to say the least. The one thing that pushed us forward was our purpose and the inspiration it sparked in all of us. Our recent struggles of crafting resumes led us to want to build something that would make us never struggle again. It was this purpose that drove us to build the final product that we did.
What's next for GitMe
GitMe can already perform the tasks that we gave it without fail. However, sometimes, if a user has a lot of repositories and our AI Model has a lot of information to parse through, loading times get increasingly long for the user. We wish to fully optimize and enhance our backend algorithms to give our users the best possible experience they could wish for while using our AI Model. Additionally, we wish to add more functionality in the future. Not only do we want our AI to automate the resume building process, but we also want it to do things like generate project ideas for users based on their knowledge and skills demonstrated through the projects that they have already built. We wish to fully automate the process in order to make it as easy as possible for the user. We want our AI Model to be able to perform countless functionalities with just a username input and the click of a button.
Log in or sign up for Devpost to join the conversation.