Storefront SaaS for delivery restaurants
A multi-tenant platform that turns a shared codebase into full e-commerce storefronts: the restaurant owner manages catalog, customers, and subscription; the platform owner manages tenants, tariffs, and billing. Two client sites run live in production.


Problem & goal
Launching a delivery website normally means custom development for every restaurant. The goal was a multi-tenant SaaS where a new brand gets a complete storefront — menu, cart, delivery zones, customer accounts — by configuration alone: brand, menu, city, and delivery terms are set up on shared code, with no per-client build.
My role & ownership
I built the product end to end: the site owner admin (catalog with modifiers, delivery zone maps, default cart rules, customer base, revenue analytics, SaaS subscription), the platform owner admin (tenants, tariffs, billing, instances), and the multi-tenant storefront architecture for desktop and mobile. Customer accounts work through SMS OTP with order history and cashback.
Product modules


Key engineering challenges
Two admin planes on one codebase
The site owner and the platform owner need different UX and different permissions over the same multi-tenant data. I split the product into two admin applications with a shared backend, keeping tenant boundaries enforced at the data-access layer.
Templating per restaurant
Brand, menu, city, and delivery terms are tenant configuration, not code. A new restaurant gets a working storefront without a separate build — the same deployment serves every client site.
E-commerce tied to operations
The storefront is wired to the operational cabinet: catalog and modifiers, delivery zone polygons on a map, default cart items, revenue analytics, and the SaaS subscription lifecycle.
Customer accounts via SMS OTP
Phone-based sign-in links a customer profile to order history, cashback, and gifts — one account across the storefront without passwords.
Technology stack
Frontend
- Next.js
- TypeScript
- Tailwind CSS
- Zustand
- TanStack Query
- React Hook Form
- Zod
Backend
- Node.js
- Fastify
- REST API
- WebSocket
- JWT + RBAC
Data
- PostgreSQL
- Prisma
- Redis
Infrastructure
- Vercel
- Render
- Cloudflare R2
- SMS provider