Vedasri Traders
A full online grocery store for our family's kirana shop in Gachibowli. One app with two sides: customers shop, and we run the business from the same place.
- My role
- Product, design, build and deployment
- Type
- Family business
- Built with
- Next.js 14, Supabase, Gemini, Razorpay
- Status
- Live on the web, Android app on the way
Why I built it
Customers around Gachibowli are used to ordering groceries from quick-commerce apps. I wanted our own store to offer that same convenience while keeping what a neighbourhood kirana does that big apps don't: credit (khata) for regular customers, bulk prices for businesses buying in quantity, and separate business and personal accounts.
One app, two sides
Customers and our team use the same app. What you see depends on your account's role, and row-level security in the database keeps each side to its own data. Switch between them:
- Browse 20 categories, with bulk price tiers for wholesale buyers
- Scan a handwritten list, pick from alternatives when a match is unsure
- Offers, wishlist, saved addresses, referrals and rewards
- Razorpay checkout and live order tracking
- Approve new customers when they first check out
- Scan supplier invoices to record stock intake
- Khata credit payments, expenses and an analytics dashboard
- An audit log of admin actions that can't be edited or deleted
How the list scanner works
A customer takes a photo of their list. Gemini reads the handwriting, then matching code compares each line with our catalogue using fuzzy matching, so small spelling differences still find the right product. When a line could mean more than one item, the customer picks from a few candidates instead of the app guessing. Everything confirmed lands in the cart.
Built to be trusted
- Supabase Auth is the only sign-in system, and row-level security in the database keeps each customer to their own data
- A security audit found and fixed a leak between admin and customer data, plus a sign-out bug
- Stock updates run as single database operations, so two people can't buy the last packet at the same time
- The referral system blocks people from referring themselves, enforced inside the database
What's next
The store is live on the web. The Android version, packaged with Capacitor, is the current work in progress.
What I learned
This was the first project where many separate services had to agree with each other: logins, the database, payments, an AI model and the shop's own stock. Two kinds of users sharing one app taught me how row-level security really works, and the audit that found a leak between admin and customer data taught me to test my own assumptions instead of trusting that something looks right.

More projects
Want something like this for your business?
Send an enquiry