Inspiration:

We came up with idea of local-genie when once on an outing to find our dearest frankie-waale bhaiya led us to think of a place where his information/whereabouts of the stall might be available because our plan for the day depended on it and we rarely made plans. This small outing led us to a question, “How can we find mobile vendors/stall in our nearest place”. Since these establishments are mobile they are not present on Google Maps or similar apps and no one has contact of every other mobile/local vendors in their contacts. We came up with the idea to provide a platform to these local-genies who like ‘Genie’ of Aladdin fulfill our wishes of some mouth-watering cuisines when we wish for it.

What it does:

It is a PWA which provides a platform to all the mobile vendors and local stall owners who don’t have any permanent establishment but are heavily dependent on their loyal customers for their earnings. Our App provides vendors a place to list their offerings be it food/fruit or any other item which they sell on their stalls. It provides buyers with options to include local vendors/stalls when they are looking out for some stuff which might be available. Buyers can compare stores and also help others by providing review/rating to the stores that they visit. Our app will also send notification to the buyers whenever their favorite stall owner comes near their area. It has a simple UI to not bother users with content that they won’t need.

How we built it:

App consist of Frontend, Backend, DB and a headless CMS. To develop frontend we used Reactjs to create the components. All the CSS was custom written to give a feel of minimal app. For the backend section we focused on a domain-driven-design(DDD) which allowed us to separate our datasources, business-logic, APIs into layers and allowed us to independently develop them. We are using service-workers to implement push-notifications. To support multi-threading we are utilizing go-routines, we are doing this to avoid a queue of notifications which may hang our application. We are using OpenStreetMaps and leaflet to include map of the surrounding to the users. We have used postgresql to implement a database which stores users and stalls information. We are also using Storyblok to show the content of Stalls along with their offerings. Reason to use storyblok was its speed and flexibility it provided us in creating the pages

Challenges:

Implementing StoryBlok SDK in goLang: As we have used storyblok to deliver the content to the users, we have to implement create, update and delete routes in the backend and read operation directly from the frontend. But Storyblok has sdk available only in javascript. Thus we have to implement storyblok sdk in the goLang. This includes implementing complex api’s like uploading vendor assets (images and other info) to CMS through backend. Being new to golang, that took lot of iterations to make it happen and was time consuming.

Sending push notifications to users nearby to vendors: Sending notifications in PWA if itself complex as it involves storing subscription objects for each of the user into the database. For our application we have to specifically target a subset of users around the vendor.

Accomplishments that we’re proud of

We created a SDK for using Storyblok with Golang It help us learn go in deep and how SDK works, usually we use already build SDK but in the need of hours we were able to find solution.

We made PWA feel almost like native app. To save the effort for downloading an app from play store.

What we learned

We learned about code collaborations. All the team members were collaborating on single mono-repo without any problem. We first defined git workflow, even before starting project ideation. We also learned about scaling and domain driven architecture.

What's next for localgenie.us

We would try to make it production ready with multilingual support, to remove any language barrier between vendor and app.
Add analytics for vendors, in order to use business practices for more revenue.

Share this project:

Updates