All projects
LiveFull-Stack

Softwave Restaurant Platform

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

Role
Lead Front-End Developer
Timeline
2025 – Present
Client
Restaurants (first client: Pizza Bebo)
Year
2025
Softwave Restaurant Platform
01

Overview

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.

The problem

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.

The solution

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.

02

Who It's For

R

Restaurant owners & staff

Manage the menu, take POS orders, follow online orders, run campaigns and review the accounts.

C

Customers

Browse the menu, order for delivery, take-away or dine-in, book a table and track their orders.

03

Key Features

Online Ordering Website

A branded storefront for each restaurant with menu, categories, branches, product options, cart and checkout. It supports delivery, take-away and dine-in.

POS Inside the Dashboard

A cashier screen with product search, category filters, item customization, branch and customer selection, tax calculation and one-click order placing.

Restaurant Accounting

GL accounts with approval, journal entries, main and sub account statements, and a trial balance with opening balance, movements and closing balance.

Operations Dashboard

Today's revenue, pending orders, completed revenue, reserved tables, weekly revenue and orders, and sales by category.

Branches & Delivery Zones

Multiple branches, a default branch per customer, and delivery zones with dynamic delivery pricing.

Campaigns & Collections

Promotional campaigns and curated collections to highlight dishes on the website.

QR Menu & Reservations

A QR menu for dine-in tables and a table reservation flow on the website.

Per-Restaurant Settings

Tax and service fees, allowed order types, and email, SMS, WhatsApp and payment gateway settings, with role-based permissions for staff.

05

Architecture

01

Tenant resolution

Each request's domain is resolved to its restaurant through a signed (HMAC) server call, then cached

02

Restaurant website

Next.js storefront themed with the tenant's logo, colors, menu and branches

03

Dashboard & POS

Same app, protected and permission-based: menu, orders, POS, finance, settings

04

GraphQL API

Shared backend for all tenants, consumed with Apollo Client and typed with Codegen

06

Challenges & Solutions

One codebase, many restaurants

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.

POS and online orders in one flow

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.

Have a project like this in mind?

I'd love to help you build something great. Tell me what you're working on.

Let's talk