Loading
MobileLive in production

Devli

Single-store pooja e-commerce app on Grocup

Devli pooja store app showing home catalog, categories and cart in a saffron-branded mobile UI
Role
Frontend & Mobile Engineer
Platforms
iOS · Android
Year
2026 – Present
Status
Production

Stack

  • React Native
  • Expo
  • TypeScript
  • React Navigation
  • Axios
  • AsyncStorage
  • Grocup REST API
  • Razorpay
  • Google Maps
  • Google Cloud Speech-to-Text
  • expo-speech-recognition
  • expo-location
  • Native OTP SMS Consent
  • EAS Build
01

Context

Devli is the customer-facing mobile app for a single pooja store on Grocup (sellerId 6, www.devli.in / devli.grocup.com). Shoppers browse ritual essentials, add to cart, authenticate with phone OTP, set delivery location, and place orders for home delivery or store pickup.

The codebase started as a fork of a multi-store grocery + pharmacy marketplace (Paas Ki Dukaan / MargERP). The project was a full domain and API migration into a branded single-store Pooja app.

02

The problem

The source app assumed a marketplace: pincode nearby stores, grocery vs pharmacy catalogs, prescriptions, dual carts, and MargERP-specific auth and banners. None of that matched Devli’s model one seller, one catalog, no Rx, Grocup headers (`origin` + `gc-customer-token`), and local cart state.

Shipping a store-ready app meant rewriting the API layer and stripping marketplace concepts without breaking checkout, deep links, or release builds.

03

What I built

  • Migrated the entire network layer from MargERP to Grocup (`api.grocup.com`): store details, categories, products, banners, sections, search, OTP login, addresses, and orders — with `origin: https://devli.grocup.com` and `gc-customer-token` on every authenticated call
  • Collapsed multi-store marketplace flows into a single-store entry: splash → home, store details cached on launch, pincode only where delivery needs it
  • Removed grocery/pharmacy/prescription surfaces; unified cart, product detail, categories, and home sections around a Pooja catalog
  • Rebranded the app as Devli (saffron/maroon theme, icons, scheme `devli://`, package `com.devli.grocup`) and simplified navigation to Home, Categories, Cart, Orders, Profile
  • Shipped commerce extras: wishlist, location picker + Google Maps, Razorpay checkout wiring, invoice preview, banner/section home layouts, brands and offer grids
  • Added voice search (expo-speech-recognition + Google Speech-to-Text), QR scanning, and deep links for `devli://`, `devli.grocup.com`, and `www.devli.in`
  • Built a custom Android Expo module for SMS User Consent OTP autofill, plus EAS profiles for development, preview APK, and production AAB
04

Engineering challenges

API contract mismatch. MargERP paths were store-scoped and split by grocery/pharma; Grocup is origin-scoped and unified. Every service had to be remapped without leaving dead endpoints or dual-cart assumptions in checkout.

Domain deletion without regressions. Pharmacy screens, Rx tags, store-list discovery, and section-based theming were woven through navigation and context. Removing them meant careful navigator cleanup so deep links and product stacks still worked.

Native friction on a shared Expo codebase. Location, camera/QR, speech recognition, Maps keys, network security config for `api.grocup.com`, and Play Services SMS consent all needed platform-correct wiring while keeping TypeScript app code shared.

05

Outcome

Devli ships as a single-store Pooja commerce app on Expo 57 / React Native, backed by Grocup, with production EAS Android builds (v1.0.1) and a live storefront at www.devli.in.