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.

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