Inspiration💡

In the real of software engineering, teams constantly encounter the challenge of onboarding new members while maintaining productivity and efficiency. Whether it's a research group embarking on uncharted territories or developers immersing themselves in a new project, mastering new commands and understanding their usage can be an intimidating endeavor.

Entering a new coding environment poses several challenges for an aspiring developer: learning proper and efficient ways to utilize commands, figuring out the relevant branches to work on, and learning to report the contributions you've made in a proper manner. These challenges are especially prevalent in the academic circles because of how inherently interdisciplinary STEM research is. A new prospective researcher is expected to not only work on the topic of their choice, but often also acquire the relevant programming skills on the side.

long_command

Additionally, some commands require a multitude of arguments to be usable. The time it takes to figure out such commands could be better spent. Even if there aren't

Recognizing these challenges we embarked on the journey to bridge the gap between experienced and novice developers. Bridging this gap could help a new generation of researchers and developers reach their full potential within their role.

Introducing Clique - a virtual command-prompt environment manager aiming to leverage the experience of senior developers to make the onboarding process a more painless and quick experience.

What it does🤔

Clique sets up a virtual CMD environment (called ph on the CLI) for any group of or even individual developers. While a standard virtual environment (e.g. Python venv) isolates code dependencies, a Clique environment isolates commands and Git repository information. Users can create a new Clique environment (via ph --gname [envname]) for a specific project (or several related ones), shared between other users. They are able to navigate git repositories and statuses and to search for their own or their team's previous commands in the command line more easily with the help of AI.

The main features that a user can do within a Clique environment include:

1. Git commit message generation (ph --commit [repo])

Clique automates the process of generating descriptive and informative Git commit messages for every code change made within the development environment. By leveraging a Large Language Model, it makes sure that commit messages accurately reflect the essence of the changes, ensuring code readability, documentation consistency and project maintainability. This will then prompt the user if they would like to proceed or edit the commit message before Clique pushes it to the repository and stores the commit in a vector database.

2. Git issue generation (ph --issue [file])

Clique automates the process of raising easily identifiable issues of specific files.

3. Semantic search through git commits (ph --git_search [repo] [prompt])

Clique enables developers to efficiently search through past Git commits to pinpoint specific features, bug fixes, or enhancements. By applying semantic search to a database of previously recorded git commits, it retrieves relevant commit information, including the branch and timestamp of each commit, streamlining the process of code exploration and analysis.

4. Command prompt logging and search (ph --command_search [repo] [prompt])

Once turned on Clique records every command executed within the command prompt, in order to provide command prompt suggestions for future developers. Once prompted clique can use the database of previously commands to suggest proper arguments and usage cases to a new user.

5. Answering queries based on logged CLI data

Similarly Clique is able to leverage the dataset of previously used commands to answer queries from users providing relevant commands through leveraging semantic search.

6. Managing multiple environments (ph --gname [env], ph --exit)

Clique allows the users to seamlessly switch between different environments ensuring that the commands logged are only used in corresponding projects. Through the management of environments a developer is able to contribute to different projects without polluting the data with irrelevant commands.

7. Test Generation (ph --stress [file])

Clique allows the users to seamlessly generate tests for their programs.

In summary Clique harnesses the power of data-driven decision-making to assist developers in their day-to-day tasks.

Best Developer Tool by Warp🛠️

Clique is meant to be used as an everyday developer tool enhancing collaboration, and optimizing workflow efficiency. With its comprehensive suite of features, including command logging, Git commit management, semantic search, and environment management, Clique empowers developers to navigate coding environments with ease, accelerating project development and fostering innovation. Our tool works seamlessly within the Warp terminal, and our vision is that the idea of our tool could be integrated into Warp itself.

Best Education Hack -- Track Prize🎓

Clique caters to research groups, aiming to unify programming with diverse STEM fields. With Clique's assistance, new lab members seamlessly integrate into research environments, bypassing the need for extensive programming expertise.

Best Use of AI in Education👨‍🏫

Employing semantic search and large language models, Clique seamlessly integrates AI technologies to mitigate the steep learning curve for aspiring developers. By providing CLI suggestions, answering queries, and enabling GitHub commit-based version searching, Clique empowers research endeavors to flourish, overcoming the hurdles of early developer onboarding.

Best Use of MongoDB Atlas📊

We used Atlas. We used Vector Search, Time-Series collections and full text search.

Best .Tech Domain Name 🥬

Our software is distributed through devin-buy-me-lettuce.tech

How we built it⚙️

flow_chart

Challenges we ran into

  • Bash programming is difficult. This was necessary to get things conveniently done in the terminal, especially logging commands and placing them in the server. It was also difficult to sync state between the clique application and the bash scripts (such as for the current environment the user is in).
  • Subprocess creation was something we struggled with in Python.
  • Sometimes getting the exact user flows we wanted turned out to be impossible on WSL.
  • We had to deal with a lot of latency issues due to performing API calls on MongoDB. Figuring out persistence and working with vector databases was difficult.
  • We also only hacked on our project for 10 hours because we completely pivoted late into the hackathon.

Why ours is better than a copilot assistant for coding

A standard idea for a developer tool would be to create some sort of assistant to help you code in some way or another. This was an idea we considered, but it is not something novel, and is not something I would necessarily use as a developer as Github Copilot already exists. The main challenge of developers isn't really only with coding; instead, it is navigation of the terminal that is often overlooked. We try to bridge that gap by solving the pressing issue, allowing users to use AI better in their terminal.

Accomplishments that we're proud of

Every single goal we wanted to hit was accomplished. We created something that, if extended, would be something we would use. This developer tool is something I most likely would use for myself when working on projects with others, or even just with myself. Most importantly, we had fun working on the project.

What we learned 🙌

It's never too late to completely change the direction of a project. Ensuring that every member is excited about the project is essential to a great Hackathon experience.

Built With

Share this project:

Updates