Sisyphus Hyperlocal Marketplace project by Sahil and Utkarsh Singh

AttainU
AttainU

Sisyphus Hyper local Marketplace

Introduction
Sisyphus is a hyperlocal market place which aims to solve the the availability of the products in the locality of the user. Most of the times, we tend to purchase from e-commerce sites like amazon and Flipkar. Despite the product being available in our locality most of the time, we still order them
online, owing to the fact it’s convenient.
Sisyphus connects the local vendors to the users. A vendor can register and add the products to the
car from a central database. The user can search for any product in a given radius. The result will
contain all the nearby vendors who sell the searched product.

What are we trying to build?
We are trying to build a platorm where vendors can get more visibility and grow their business, which seems to have taken a back step in the era of e-commerce dominance. The users also get benefted from this service as they don’t have to wait long for the order, intact they get it delivered within an hour or so.

Technology
In building this hyperlocal marketplace we used Node Js, along with Express framework for handling network requests.
Apar from express and node we have used Mongo db, a No-SQL db, for data persistence.
We opted for mongo db as it has a fexible structure and has fast geo queries.
We have used Algolia as a central database for products. The vendor can search the product that he sells and add it to his inventory. Algolia provides out of the box fuzzy search or parial text search.
We have used Nodemailer for sending emails to the user, mainly when the user or vendor forgets the password and opts to reset it.

Challenges faced
While building the project querying the nearby vendor was a challenge. The products were on a centralised database in algolia and the vendors rested in mongo db. The challenge was to combine the results of the parial text search with the geo query in a give radius at a paricular coordinate.
Initially we fetched all the products matching the search and queried the nearby vendor and found a common between the two results. This was a brute force approach and was not at all efcient in the terms of time complexity. Moreover it increased the cost.
A diferent approach was followed where the vendor can search for the product and save them in his inventory. The product was also saved in mongo db with a reference of vendor in the schema. Then we used the powerul aggregation framework of mongo db which helped us to query the nearby vendors. But as we shifed from algolia to mongo, we lost the power of parial text search, which was solved using regex, which matched the parial string too while querying.

Scope for improvement
There is always a room for improvement. In future, Facebook auth and google auth can be included. A payment gateway can also be included which will allow online payment for the orders. Deep links for redirecting the user to the frontEnd app can also be implemented. A more secure two factor authentication can be put in place, allowing the user to login through their phone number.

DEMO :