One of the most common features present in every application we use nowadays is the ability to search content within the app. Be it any entertainment platform or an e-commerce website, search plays a crucial role in providing users with their requested content quickly and accurately.
While implementing a search is easy, fine-tuning it to improve user experience and performance is difficult.
That's why we built moonlight, a GraphQL-based search engine tool powered by Stepzen that helps you personalize searches for each user, without the need to write a single line of code. All you need to do is select your data source, configure the data fields (or columns) and assign weightage to the fields which by which you want to rank the results.
How we built it
Moonlight can be configured with your existing database which can be PostgreSQL, MongoDB, MySQL, or even Microfost Excel or Google sheets. We are working to get more data sources in the mix!
- We used Nextjs and Context (for managing global state) on client side to make a single page application with a good UI.
- We used Stepzen to get GraphQL endpoint from the Rest API Endpoint after the final processing, which would be then used to query the db provided.
Challenges we ran into
This was the first time we worked with Elasticsearch. Getting it running inside a Docker container and building all the data pipelines for different sources of data was a challenge
Accomplishments that we're proud of
- We could come up with a sass tool in such a short period of time ,that would automate the process of inserting data from provided database and then parsing and redefining schema as per user input.
- The database is queried by GraphQL where the request and response types are defined and we are happy that we could achieve that successfully with the help of Stepzen.
What we learned
- We learned how to decouple request using celery to put heavy computational task in task queue.
- We learned how to work with stepzen, got to learn how to automate the process using shell script.
What's next for Moonlight
- We think that this product is much needed for market and it can help companies do quite better.