Inspiration
Licenses are a key part of any project. They hold enormous legal weight and therefore must be done right. However, determining your project's license is difficult; you need to sort through all your dependencies, find all their license, and determine what you can do with your project (ie. a whole ton of work). In order to support developers during this process, I created LicenseLens. A website that allows you to automate the license finding processes using AI and AI tools.
What it does
LicensesLens takes your list of dependencies, and then individually searches for that dependency's license. It then displays your dependencies' license to you in order to inform you about what you can and can't do with your project. This way you don't have to sludge through google searches, repository structures, and license types yourself!
How we built it
I used React, TailwindCSS, and TypeScript in order to build an interactive, legible front end. I used Next.js and TypeScript for the backend, relying heavily on publicly available APIs such as Github's repository API, Bravo's search engine API, and Vertex AI's Gemini API. For the database, I used Supabase DB along with the Prisma ORM. Finally, for authentication, I used Supabase Auth.
Challenges we ran into
Unfortunately, due to a miscommunication, I lost my only other team member right before the Hackathon. This was after we had already agreed on a really good idea. Although I reassessed the amount of work in order to make sure only one person could do it, the project felt incomplete without the other features. In addition, I did not know for sure which features I would get to, so I had to set up the architecture in a way to accounts for them even if I do not get to them. This slowed down my progress a bit. This was also my first time working so extensively with APIs. This was especially challenging as these APIs also had to work together. For example, I combine the Gemini API with the Bravo search API in order to get target searching. Juggling this many APIs, their requests and responses, was a difficult task that forced me to work slowly in order to ensure the logic worked.
Accomplishments that we're proud of
I am very happy with how well the APIs are working together. Although it may be slow sending out this many API requests, it feels really good to have a system of this complexity working well. I am also proud of how I was able rapidly to manage the loss of a team member and still produce a project in the end.
What we learned
I learned a lot about APIs and best practices with APIs. I also got to learn prioritization of tasks, given that I had to nearly half the number of features I was planning on doing before.
What's next for LicenseLens
I hope to implement the features that were not implemented. These features would complete the LicenseLens suite, providing full coverage for all that developers need regarding their license and dependencies. These features include...
- Providing a display for projects. The codebase already keeps projects separate, allowing for many different dependency lists to exist. Yet, there is no way to view old projects. By adding this page, users would be able to keep track of dependencies from multiple projects.
- Allowing for manual editing of dependency data. Yet again, there already exists an internal API for this, however the front end is not complete, so this feature is not available to the users. I wish to allow users to make their own edits to the license information.
- A 'greedy license'. A 'greedy license' would combine all the dependency license into a single licenses with the most accessibility while still remaining legal. This would simply be compiling all of a project's dependencies and querying an AI for the 'greedy license'.
- An open source chatbot. Using the already existing API calls to Gemini, I could build a chatbot that allows users to get dependency replacement ideas in order to switch from non-open source dependencies to open source dependencies.
Built With
- bravesearchapi
- githubapi
- googlecloudprovider
- next.js
- prisma
- pypipackageapi
- react
- tailwindcss
- typescript
- vertexaiapi
Log in or sign up for Devpost to join the conversation.