Skip to main content

Software engineering

Tavola — Multi-Tenant Restaurant Reservation Platform

A multi-tenant SaaS for restaurant reservations, tables, branches and staff: NestJS backend with real-time updates, a Flutter customer app, a React restaurant dashboard and a platform-owner console.

Evidence
Verified work
Category
Software engineering
Architecture schematic · no published imagery

Overview

Tavola is a reservation platform for restaurants. Restaurants manage reservations, tables and floor plans, branches, employees, menus, offers, subscriptions and analytics through one backend; customers discover restaurants, book tables, join waitlists and receive notifications in a mobile app; platform operators manage the whole network from a separate console.

Problem

A reservation system is only useful if its state is correct under concurrency: a table cannot be promised twice, a waitlist must advance in order, and staff on the floor must see changes as they happen. On top of that, one deployment has to serve many restaurants without any of them seeing another's data.

Constraints

Tenant isolation for every request; four distinct actors (customer, restaurant staff, restaurant owner, platform admin) with separate authentication paths; multiple languages and currencies as design goals; and live operational updates that must pass through a reverse proxy.

Approach

The work was planned documentation-first: architecture, domain model, database design and a development roadmap were completed before implementation, and binding choices are recorded as architecture decision records. Implementation then proceeded module by module — infrastructure, authentication, authorisation, tables, the reservation engine, real time, notifications — each closed with its own verification.

Architecture

A modular NestJS application exposes a versioned REST API (/api/v1) behind Nginx. PostgreSQL is accessed through Prisma with a controlled migration policy; Redis provides sliding-window rate limiting and the Socket.IO adapter for live table and reservation updates; BullMQ runs durable background work; MinIO stores media. Push notifications go through OneSignal.

Clients are separate applications: a Flutter customer app (GetX, feature-based MVC, a Dio client with bearer refresh and a guest mode), a React 19 + TypeScript restaurant dashboard with English/Arabic and dark/light themes, and a standalone platform-owner console that authenticates only against the platform-admin endpoints.

Engineering decisions

Authentication uses JWTs with refresh-token families and server-side sessions, so a stolen refresh token can be detected and a whole family revoked. Authorisation is a separate layer of RBAC policies, permission resolution and scope guards — being signed in and being allowed are different checks.

Platform administration has its own login and token type rather than a privileged restaurant role, which keeps the platform-operator surface out of the tenant authentication path entirely.

Challenges

The table module supports moving, merging and splitting tables while reservations reference them; the reservation engine covers approval, lifecycle, phone and walk-in bookings, waitlists and operational signals. Real-time delivery had to be verified end-to-end through Nginx, not only in-process.

Results

As reported in the backend repository: the table module (including merge and split) and the reservation engine are implemented and live-verified; the WebSocket layer is verified through Nginx; and the notification system passes a strict end-to-end suite of 34 suites / 377 tests.

Software engineering

VegaCore Operating System (VOS)

An ERP / CRM / project-management platform for VegaCORE: CRM, projects, marketing, media, HR, finance, archive and AI modules on NestJS, Prisma, PostgreSQL and Next.js 15.

Stack

  • NestJS
  • TypeScript
  • PostgreSQL
  • Prisma
  • Redis
  • Object storage (S3 / MinIO)
  • Next.js
  • Tailwind CSS
  • Authorization (RBAC)
  • Authentication & session security
  • Docker
  • Nginx
  • Source
  • Documented: Architecture

Software engineering

Saree'e — Parts Delivery Dispatch Platform

A motorcycle-based automotive-parts delivery platform: dispatch, multi-order routing, driver capacity, live tracking, pricing and ledgers — designed through accepted ADRs, with a NestJS foundation.

Stack

  • NestJS
  • TypeScript
  • PostgreSQL
  • Prisma
  • Redis
  • BullMQ
  • System design & ADRs
  • REST API design
  • Source
  • Documented: Approach, Architecture, Results

Web

yazanalsamman.com — Cinematic Portfolio Platform

This website: a bilingual, CMS-driven portfolio with a scroll-driven WebGL narrative, strict performance budgets, accessibility and SEO verification, and a containerised VPS deployment.

Stack

  • Next.js
  • React
  • TypeScript
  • Payload CMS
  • PostgreSQL
  • Three.js / WebGL
  • Tailwind CSS
  • Docker
  • Nginx
  • Performance engineering
  • Web accessibility
  • Internationalization & RTL
  • Automated testing
  • Source
  • Documented: Architecture, Results