All projects
Multi-tenant SaaSIn productionBuilt solo, end to end

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.

Platform admin — SaaS operations dashboard
Platform admin — SaaS operations dashboard

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