Client build · Subscription delivery · 2025

One backend, four apps, a delivery every weekday.

A subscription fresh-produce delivery platform for Hyderabad: a React storefront and admin, three native Android apps for customers, delivery partners and the kitchen, all on one Supabase backend with Razorpay.

FruitPlaza storefront, subscription fruit delivery built by DevLune
1
backend shared by four apps
3
native Android apps
52
database migrations
11
edge functions

The brief

FruitPlaza sells fruit boxes, juices and bowls on a plan: a customer buys a product plus a plan, say thirty deliveries, upfront, and then receives one delivery on every valid weekday. That makes it a scheduling problem as much as a store. Holidays skip. Customers pause and resume, and every missed day has to be appended to the end of the plan. Each delivery has to reach the partner who covers that customer's area, on time, in Indian Standard Time.

The brief was one system that the customer, the kitchen, the delivery partner and the owner could all work from, without four separate backends drifting apart.

What shipped

Every line below is in the build, not on a roadmap.

React 18TypeScriptViteTailwindshadcn/uiTanStack QuerySupabaseRazorpayMapboxLeafletKotlinJetpack ComposeHiltVitest
  • One React app for the storefront, the admin panel and a staff portal
  • Three native Android apps in Kotlin and Compose: customer, delivery partner, kitchen
  • Supabase Postgres with row-level security for four roles: admin, customer, delivery partner, staff
  • Database triggers that generate one order row per delivery day and assign a partner by geo region
  • Polygon region editor for the admin (Mapbox) and address picking for customers (Leaflet)
  • Eleven edge functions: Razorpay order, HMAC verify, webhook and refund, transactional email, OTP reset, Meta CAPI
  • Dual payments: Razorpay online, plus UPI QR with manual verification
  • Pause and resume ledger with IST-safe date invariants, so a plan never loses or duplicates a day
  • Delivery route optimiser using Mapbox routing and Play Services location
  • Nightly maintenance on pg_cron; GA4 plus Meta Pixel and Conversions API

Want one of these?

The same stack and the same process, priced from the floors on the service page. Every number is negotiable.

Crafted in the dark. Shipped to the world.

Tell us what you are building. You get a private project space with a proposal and a line-by-line quote within a day.