A multi-tenant restaurant system: online ordering on each restaurant's own branded website, a POS inside the dashboard, and built-in restaurant accounting.

Softwave Restaurant is a SaaS platform that gives every restaurant three things in one system: its own branded website for online orders and table reservations, a point-of-sale screen inside the dashboard for in-store orders, and the restaurant's accounting.
It is multi-tenant: one codebase serves every restaurant. Each restaurant runs on its own domain with its own logo, colors, menu, branches and settings. Pizza Bebo is the first restaurant live on it.
Restaurants usually juggle a delivery app, a separate cashier system and spreadsheets for accounts. Orders, sales and money end up in three places, and the restaurant has no website of its own.
One platform where online orders and POS orders land in the same orders list, every sale feeds straight into the accounting (journal entries, account statements, trial balance), and each restaurant gets its own branded ordering website.
Manage the menu, take POS orders, follow online orders, run campaigns and review the accounts.
Browse the menu, order for delivery, take-away or dine-in, book a table and track their orders.
A branded storefront for each restaurant with menu, categories, branches, product options, cart and checkout. It supports delivery, take-away and dine-in.
A cashier screen with product search, category filters, item customization, branch and customer selection, tax calculation and one-click order placing.
GL accounts with approval, journal entries, main and sub account statements, and a trial balance with opening balance, movements and closing balance.
Today's revenue, pending orders, completed revenue, reserved tables, weekly revenue and orders, and sales by category.
Multiple branches, a default branch per customer, and delivery zones with dynamic delivery pricing.
Promotional campaigns and curated collections to highlight dishes on the website.
A QR menu for dine-in tables and a table reservation flow on the website.
Tax and service fees, allowed order types, and email, SMS, WhatsApp and payment gateway settings, with role-based permissions for staff.
1 / 7Each request's domain is resolved to its restaurant through a signed (HMAC) server call, then cached
Next.js storefront themed with the tenant's logo, colors, menu and branches
Same app, protected and permission-based: menu, orders, POS, finance, settings
Shared backend for all tenants, consumed with Apollo Client and typed with Codegen
Challenge
Every restaurant needed its own domain, branding, menu and settings, without deploying a separate app for each one, and without one tenant ever seeing another tenant's data.
Solution
The app resolves the tenant from the incoming domain on the server. It calls the tenant API with a service key and an HMAC-signed payload, caches the result per domain with tag-based revalidation, and falls back safely if the lookup fails. Theme, languages and API endpoints are then driven by that tenant's configuration.
Challenge
In-store cashier orders and online orders have different inputs (branch, walk-in customer, order type, taxes), but they must end up in the same orders list and the same accounts.
Solution
I built the POS as a dashboard feature on the same order model: a product grid, a customization dialog and a cart panel that calculates subtotal, tax fees and total. Both channels create orders the same way, so reports and accounting stay consistent.
I'd love to help you build something great. Tell me what you're working on.
Let's talk
A full-stack platform for a medical center. Patients can ask questions and get answers from specialist doctors, leave reviews, and contact the clinic.

An online academy for project management (PMP®, CAPM®, PMO, Risk). It has secure video courses, scored exams, "mistake" exams and verifiable certificates, plus a full admin dashboard.

One QR code that opens a branded page for each business, with its menu, branches, social links and one-tap "save contact", plus a dashboard to manage it all.