CASE STUDY · 2026

Karum Kurum — a restaurant and a pantry, online

A custom Next.js and Firebase platform for a Jayanagar South Indian restaurant and pantry — storefront, admin panel and a React Native app on one Firestore backend, with Zoho Payments checkout, Zoho Books inventory sync and Shiprocket delivery.

CLIENT
Karum Kurum
ROLE
Design + Next.js & Firebase engineering + React Native app
YEAR
2026
STATUS
Live
REGION
Bengaluru, India
STACK
  • Next.js 14
  • Firebase
  • Cloud Functions
  • Zoho Payments
  • Shiprocket
  • React Native

Visit karumkurum.com ↗

The brief

Karum Kurum is a Jayanagar 4th Block restaurant with a philosophy — अन्नं सर्वौषधम् (Food is Medicine) — and a shop attached to it. Consciously curated, single-origin, farm-direct. Pantry staples, vegan bakes, healthy ladoos and chikki, Andhra pickles, festival sweets like ariselu and gond ladoo, handpound rice.

The founders needed two things on the web: a real e-commerce that reflects the philosophy without feeling like a template store, and a way to communicate the restaurant, hours, and weekend pop-up dining. All editable by their small ops team — and, eventually, an app their regulars could reorder from in three taps.

The approach

Built from scratch on Next.js and Firebase. Next.js 14 with the App Router, React 18, TypeScript and Tailwind, served by Firebase Hosting’s frameworks backend — SSR running on Cloud Run in asia-south1, so the request never leaves the region the customers are in. Firestore holds the catalogue, orders and content; Firebase Auth handles accounts; Cloud Functions v2 on Node 22 does the work that must not happen in a browser.

One backend, three surfaces. The storefront, a separate React and Vite admin panel, and a React Native app built with Expo all talk to the same Firestore and the same callable functions. Ops changes a price once. There is no sync job between surfaces because there is nothing to sync.

Zoho Payments, wired properly. The founders were already on Zoho for accounting and inventory, so checkout runs on Zoho Payments over OAuth with a hosted checkout and signature-verified webhooks — one reconciled money flow, and no invoicing bridge. Zoho Books and Inventory stay in step with the catalogue and the counter, so the shop and the POS never disagree about what is in stock.

Delivery that quotes before it promises. Shiprocket returns live rate quotes at checkout and creates the shipment on payment, then tracks it. Google Places, Distance Matrix and Geocoding sit behind the address field, so a Bengaluru address is priced on real distance rather than a flat guess.

Content the ops team actually edits. A TipTap editor in the admin panel writes to Firestore; a Firestore trigger calls on-demand ISR revalidation for just the paths that changed. Editors get near-instant updates without a rebuild, and readers still get static-speed pages.

Order mail that behaves like a restaurant. Nodemailer over Gmail SMTP with the Firestore send-email extension, custom HTML templates, and .ics attachments on dining bookings so a pop-up reservation lands in the guest’s calendar.

Progressive cart mechanics. Cross the ₹2,499 free-delivery threshold and it unlocks visually in the cart. The intent isn’t a discount — it’s a nudge toward the order size that makes delivery economics work.

Restaurant and retail on one site. The home page splits between the day’s lunch specials (Tue–Sun, 12:30–2:30) and the online shop, with weekend pop-up reservations wired to a booking flow — all from one codebase.

What shipped

  • Custom Next.js 14 storefront with pantry, sweets, pickles, bakes, and beverage categories
  • Firestore + Cloud Functions v2 backend, Firebase Auth accounts, Firebase Storage media
  • Zoho Payments checkout with UPI, cards, and netbanking, and signature-verified webhooks
  • Zoho Books + Inventory sync for product, stock, and POS reconciliation
  • Shiprocket rate quotes, shipment creation, and tracking, on Google Maps-derived addresses
  • React + Vite admin panel for menu, orders, dining bookings, and content
  • React Native app for Android and iOS on Expo, shipped through EAS with OTA updates
  • Order and booking email with .ics calendar attachments
  • Progressive free-delivery cart unlock (₹2,499 Bengaluru, higher outstation)
  • Live at karumkurum.com

Notes

The best e-commerce for a small food brand doesn’t look like an e-commerce site. It looks like the shop the customer would walk into. Karum Kurum’s site reads like a menu and a pantry, not like a storefront template — which is most of the reason it was worth building rather than buying.

The other reason is the second surface. A restaurant with regulars wants an app, and an app is only worth having if it shares a backend with the website. Building the storefront on Firestore and Cloud Functions from day one meant the app was a client for something that already existed, not a second product to keep in sync.

NEXT STEP

Have a product to ship?

Start a project ↗ hello@napdesigns.com