Multi-tenant ERP platform for restaurants and delivery
One system for the whole operation: platform admin for tenants and billing, POS with shifts and orders, inventory, food cost, finance, and payroll — with per-tenant data isolation.


Problem & goal
Restaurants and delivery businesses usually run on a patchwork of disconnected tools: a POS from one vendor, spreadsheets for inventory and food cost, manual payroll. The goal was a single multi-tenant SaaS that covers the full workflow — from onboarding a new tenant to the cash register, kitchen, warehouse, and financial reports — so a new location gets working software without custom development.
My role & ownership
I designed and built the entire platform solo: multi-tenant architecture and database design, Fastify REST API with WebSocket real-time updates, Next.js frontends for platform admin, POS, and back office, JWT auth with role-based access control, and the business algorithms for food cost and inventory. I also handle deployment and production operations — migrations on live data, monitoring, and iterating on operator feedback.
Product modules


Key engineering challenges
Real-time between POS, kitchen, and back office
Order and shift state has to stay consistent across cashiers, kitchen displays, and managers working at the same time. I built WebSocket synchronization with optimistic UI updates and conflict handling for concurrent edits, so the register never blocks on the network.
Tenant isolation and role-based access
Every query is scoped to the tenant, and permissions are defined per module and role — owner, manager, cashier, cook, courier see only what their job needs. One client's data or mistakes can never leak into another client's books.
Food cost and inventory on real sales volumes
Recipes, semi-finished goods, and stock operations feed a cost engine that stays accurate as ingredient prices change. Heavy reports run on optimized PostgreSQL queries with indexing and Redis caching, using precise decimal arithmetic for money and quantities.
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
Apps & Infrastructure
- Courier app (Capacitor)
- Cloudflare R2
- Render
- Vercel