Nowadays, it’s very hard to find bio products near us and after some research, I could not find an application that can short user’s time of search and to reduce buyer’s costs. Also, I’ve noticed that local growers are disadvantaged in comparison with supermarkets, and I wanted to encourage local growers to commercialize their products on this platform to save time and to have a higher production.
As a solution, I developed a web application, where certified local producers can sell their products and the users can buy the desired products, after using the algorithm implemented in this platform or after a manual searching of what they want.
The main functionality:
I implemented a search system, where a user can make a list of desired products, for which he also offers the quantities he needs and following this information provided if there are products that meet the user’s criteria then all these products that meet the condition of being on the shortest path will be displayed on one page.
For implementing this system, I used an algorithm based on A* search. This algorithm is a special one for traversing a graph and for path search. Thus, it has as a starting point a node represented by the user who makes the request, and it aims to find a path to the given goal node having the smallest cost based on fuel cost and products cost. For calculating the distance between a user and a grower or two growers, I used the Distance Matrix API from Google and for a minimal optimization and to decrease the number of calls of this API, I sent on request only the city and the county and then I matched the distance with the users, because this API is not for free, but it is one of the best. Also, to find out the price of a liter of fuel in Romania I used a system of data scraping, because this information is very important when calculating the total cost of the journey.
Moreover, for this algorithm that I implemented in the application, it was also necessary a condition by which the nodes that are part of the same path do not have the same product name. This was necessary due to the fact that a user wants to buy only a product with a certain name, and in the application, there are several farmers that can upload the same product to the base. Hence, the idea that they must be seen as different elements in order to know which farmer uploaded a certain product and also to know details such as the price and stock that each farmer provided. Finally, in order to know if we have reached a solution, we provide at the beginning in the back-end part a number of products that we want to buy, and if the number of nodes traversed is equal to the number of products, then we know that path is a solution.
-adding a feature for online payment, because nowadays lots of people prefer to make payments by card
-adding a chat for communication between buyer and grower, because in this way the users can use the platform for more information about the products and other details