Freshworks is an incredible organisation which I have had the opportunity to join, and grow in. Its also an organisation with incredible products and behind these products are tons of brilliant codebases and repositories . As a developer, we all clone repositories in our local systems, set up IDEs, and start building awesome stuff. A great software developer once said, a developer spends 20% of his career writing code, and the remaining 80% looking at code written by others. And to make this 80% of our lives more productive, I want to present Freshworks Code Search, especially in times such as these where remote working is the need of the hour. Hence , this is my entry for the hackathon in the category : Communication and Collaboration apps for remote working
What it does
Freshworks Code search is built upon OpenGrok, an open source code search tool which came out of existence from Apache Lucene project. This tool does, exactly as advertised - helps search code, and its fast, like, lightning fast.
This tool can :
- search on multiple code bases / repositories at once,
- can search for assignments in code, occurrences of text inside code, exact files,
- can filter search by allowing user to add relative file path (eg. search of occurrences of "hello" in "/api/" only)
- can understand a plethora of languages and displays proper formatting, color-coding
and most importantly
- is on the intranet, so links of search results, exact code snippets, or lines of code can be shared across team members via easily accessible URLs, which make collaboration a piece of cake.
How I built it
This is built entirely upon openGrok and scripts have been added for customised use specific to this organisation.
What's next for Freshworks Code Search
Freshworks Code search has a long way to go. Once this can be setup in a centralised server which can access the entire source code of the products we need to :
- enable indexing of the source at specific intervals (such as 4 hours) so that only lastest code is displayed
- enable team based authorisation
- all load balancing