rp
All projects
Spring Boot

NainiStore — Hyperlocal Marketplace

End-to-end hyperlocal marketplace (Food, Bazaar, Electronics) with Spring Boot API, multi-store orders, zone-based delivery, seller/admin/delivery apps, Razorpay + COD settlements, and Firebase push notifications.

NainiStore — Hyperlocal Marketplace screenshot 1

Overview

NainiStore is a production hyperlocal marketplace built for Nainital. Customer, seller, admin, and delivery frontends run on nainistore.in subdomains (Vercel); the Spring Boot API is hosted at nainistore.com. Customers order from multiple categories (restaurants, grocery bazaar, electronics) in one flow. The backend groups sub-orders under a master order and assigns one delivery partner for multi-stop pickups. Public health check: GET https://nainistore.com/api/health returns a welcome message.

Highlights

  • ›Layered Spring Boot architecture — catalog, orders, delivery, settlement, admin, auth modules
  • ›ensureMasterOrderDeliveryGroup() — heals multi-store trips so all sub-orders share one delivery partner
  • ›Deduped assignment list API with enriched pickupStops for mobile delivery app
  • ›CatalogService with category-scoped search and store-name matching on product search
  • ›CodSettlementService — COD cash collection, Razorpay pay-to-platform, seller payout release
  • ›SPA rewrites on Vercel for deep links (order-tracking, store routes)

Features

  • ✓Multi-category catalog — Food, Bazaar, Electronics with store search and product approval workflow
  • ✓Master order + sub-orders — split checkout per seller, unified delivery trip for the partner
  • ✓Multi-pickup delivery UI — per-restaurant pickup stops, route hints, COD collection at door
  • ✓Zone-based delivery fees — polygon zones, ETA labels, out-of-zone checks
  • ✓Seller onboarding — KYC uploads, store branding, product CRUD, order management
  • ✓Admin panel — zones, sellers, products, withdrawals, CMS banners, COD settlements
  • ✓Payments — Razorpay online pay, COD with partner cash collection and platform settlement
  • ✓Auth — Email OTP, Google OAuth, JWT access/refresh tokens (~59-day sessions)
  • ✓Push notifications — Firebase messaging for customers, sellers, delivery partners

API endpoints

  • GET /api/health — Welcome + status (public, nainistore.com)
  • POST /api/auth/send-otp, /verify-otp, /google, /refresh — Customer auth
  • GET /api/catalog/{food|bazaar|electronic}/stores, /products, /stores/search — Public catalog
  • POST /api/orders, GET /api/orders — Customer checkout
  • GET /api/delivery/assignments, PATCH /api/delivery/assignments/{id}/status — Delivery partner
  • GET /api/delivery/cod-collections/{masterOrderId}/breakdown — COD settlement
  • GET/POST /api/admin/zones, /sellers, /products — Admin
  • POST /api/seller/auth/login — Seller panel