LocalKart is a hyperlocal, commission-free marketplace. It connects customers with the kirana and grocery shops already around them — the shopkeeper lists products and sets their own prices, packing charge, delivery charge and delivery radius. Customers browse nearby shops, compare them by price, distance and delivery, and place Cash-on-Delivery orders straight with the shop.
A single mobile app opens into a different experience depending on who signed in. Customers get a full quick-commerce storefront; shopkeepers get a lightweight console to run their listing and their orders. A shopkeeper can also flip into customer mode to shop from other stores — same account.
customer, shopkeeper, admin. Admins run the platform from a separate Blade web panel.
Not a prototype — a complete hyperlocal commerce flow, end to end, from a GPS pin to a delivered Cash-on-Delivery order.
The same table drives the shopkeeper's status buttons and the customer's timeline. Each forward step fires the customer notification shown underneath.
Every transition is written to an order_status_histories row with a timestamp — that's what the customer's timeline reads back. Illegal jumps are rejected by the same transition table on the server.
Each shop configures three numbers — a free-delivery radius, a maximum radius, and a packing charge — plus any number of distance bands. When a customer asks for a quote, the server walks this ladder for their exact Haversine distance from the shop.
max_delivery_radiusNot availablefree_delivery_radiusDelivery ₹0delivery_rule bandBand's chargePacking charge is always added on top when delivery is available. Distance is Haversine, computed in PHP — no spatial database extensions needed.
There's no commission on the order, no fee to register a shop, and no charge to list a product. The shopkeeper keeps the item price and the delivery charge in full; the customer pays the shop directly in cash.
GET /shops and GET /search return only shops that are approved, open, and able to deliver to those coordinates, each with a price and distance.POST /cart/items. If the cart already holds another shop's items, the app asks before clearing.GET /shops/{shop}/delivery-quote for the delivery address gives item total + packing + delivery. Payment method: Cash on Delivery.POST /orders runs one transaction: creates the order and items, decrements stock, writes the first status row, empties the cart.PUT /orders/{order}/status is checked against the legal transition table, logged with a timestamp, and pushes a notification to the customer.The schema is deliberately forward-compatible: online payments, coupons, wallets, ratings and delivery-partner accounts aren't built, but nothing in the data model blocks them.
backend/ · REST API + adminmobile/ · one app, role-based navigationWarm off-white ground, emerald primary, bold Manrope headings and iOS-style rounded frames — a unified design system across both roles.














Android 6.0+. Enable Install from unknown sources in settings. APK — no Play Store required.
Backend API live · Laravel 11 · /api/v1 · 57 routes.
This is a preview build. The live API base URL is not published on this page yet.