Inspiration
The primary inspiration for building this web app was to help developers and software engineers make informed decisions when selecting programming languages, frameworks, or libraries for their next project. With so many options available, it can be overwhelming for developers to choose the right tools for their project, especially if they're not familiar with all the available options.
The goal of this web app is to provide a personalized recommendation based on the user's requirements and project needs, making it easier for developers to make informed decisions about the technology stack they choose.
What it does
The web app we created is designed to help users discover what programming language, framework, or library would be best suited for their next project. The app accomplishes this by asking a user to enter a query about what they want to do.
Based on the user's answers, the app generates a personalized recommendation for the programming language, framework, or library that would be the best fit for their project. The recommendation is accompanied by a detailed explanation of why the suggested technology would be a good choice, as well as links to resources and tutorials to help users get started with their chosen technology.
The app is designed to be user-friendly and accessible, with a simple and intuitive interface that guides users through the recommendation process step-by-step. Overall, the app is intended to make it easier for developers and software engineers to choose the right technology stack for their projects, and to help them get started quickly and easily.
How we built it
Our team constructed this application utilizing a classic Frontend / Backend architecture, to deliver a seamless user experience. Specifically, we utilized Next.js, a powerful and flexible framework, for the frontend portion of our application. For the backend, we opted for Flask, an efficient and versatile web framework, which is proxied behind an Nginx server. To store and manage the application's data, we utilized the highly scalable and performant Neo4j database.
Challenges we ran into
Throughout our development process, we encountered several significant challenges, the primary of which was producing results that were both coherent and relevant to the user's search query. In response, we decided to leverage the advanced capabilities of the Neo4j database to connect our expansive dataset of top-rated GitHub repositories, covering over 35 distinct programming languages.
After experimenting with several different algorithms, we eventually determined that an augmented TSP algorithm, specifically tailored to our unique graph, was the most effective approach. This resulted in a 26.45% decrease in response time, providing users with more efficient and accurate recommendations. Additionally, we had to devote significant resources to cleaning our data and removing outdated or irrelevant repositories to prevent confusion within our models.
Finally, we encountered several minor obstacles along the way, such as configuring SSL certificates and determining the optimal hosting solution for our application. However, through careful planning and meticulous attention to detail, we were able to surmount each of these challenges, ultimately delivering a highly performant and user-friendly application.
Accomplishments that we're proud of
One accomplishment to be proud of is creating an application that solves a real-world problem faced by developers and software engineers. By providing personalized recommendations for programming languages, frameworks, and libraries based on project requirements, the app can save users a significant amount of time and effort in choosing the right technology stack for their projects.
Another accomplishment is developing an efficient and accurate recommendation algorithm that leverages the advanced capabilities of the Neo4j database. This algorithm can accurately match users with the most appropriate technology stack based upon their query and the keywords we generate.
Finally, building an application that is both user-friendly and accessible can be considered a significant accomplishment. By creating a simple and intuitive interface that guides users through the recommendation process step-by-step, the app can be easily used by developers and software engineers of all skill levels.
What we learned
Solving real-world problems: The application was built to solve a real-world problem faced by developers and software engineers, which was identifying the best technology stack for their projects. By addressing this problem, the application can save users significant time and effort in choosing the right technology stack.
Effective use of advanced technologies: The application utilized several advanced technologies, including Next.js, Flask, Nginx, and Neo4j, to create a seamless user experience and provide efficient and accurate recommendations. The use of augmented TSP algorithm specific to the graph, for instance, increased response time by 26.45%, which is quite significant.
User-centered design: The application was designed with the user in mind, providing a simple and intuitive interface that guides users through the recommendation process step-by-step. This makes it easy to use for developers and software engineers of all skill levels.
Another key takeaway from the description of the web application is the importance of data cleaning in machine learning and AI applications. We had to clean the data for outdated repositories or misclassified repositories that were not a framework or library. This shows that even with advanced technologies like Neo4j, data cleaning remains a crucial step in ensuring the accuracy and reliability of the recommendation algorithm.
Overall, the development of this application highlights the importance of solving real-world problems, effective use of advanced technologies, and a user-centered design approach.
What's next for Javin
Expansion of technology stack recommendations: The application currently provides recommendations for programming languages, frameworks, and libraries. However, there is potential to expand the recommendations to include other technology stacks like databases, server environments, and more.
Integration with code repositories: The application could potentially be integrated with popular code repositories like GitHub, GitLab, and Bitbucket, to provide even more personalized recommendations based on a user's existing codebase.
Improvements to the recommendation algorithm: We could continue to refine the recommendation algorithm to make it even more accurate and efficient. This could include exploring additional data sources, improving the data cleaning process, and incorporating user feedback to further personalize recommendations.
Integration with learning resources: The application could potentially be integrated with online learning resources like Codecademy, Udemy, and Pluralsight, to provide users with easy access to tutorials and courses for their recommended technology stacks.
Adding CI/CD to our development pipeline to increase efficiency and catch bugs sooner.
Overall, the web application has the potential for significant growth and development, and it will be interesting to see how the development team expands the application in the future.
Built With
- cloudflare
- docker
- neo4j
- next.js
- python
- react
- tailwindcss
- typescript
- wsgi
Log in or sign up for Devpost to join the conversation.