Damien ReichhartSign In
← Back to Projects

DeliverTable — Restaurant Booking & Delivery Platform

.NET (C#)BlazorASP.NET CoreEntity Framework CoreSignalRJWTStripePostgreSQLRedisRabbitMQDockerGitHub ActionsNginxCloudflareTrivySassLeafletSwagger / OpenAPINuGetGit
DeliverTable — Restaurant Booking & Delivery Platform

DeliverTable is a restaurant platform that connects customers, restaurant owners and administrators: browse restaurants on an interactive map, order for delivery or dine in, and pay online.

  • Context: team project (3 developers) at CCI Campus
  • Role: lead developer — ~70% of the 694 commits, including all of the infrastructure, CI/CD and background workers
  • Timeline: Feb – Jun 2026
  • Scale: 7 .NET projects · 42 entities · 38 controllers · 86 Blazor pages and components · 770+ test cases

Overview

One application serving three audiences. Customers search and filter restaurants in a list or on a Leaflet map, build a cart, apply discount codes and promotions, order for delivery or dine-in, follow the status live and rate the restaurant afterwards. Restaurant owners manage their menu, promotions, loyalty programs and events, handle incoming orders from a real-time dashboard and track their earnings. Administrators get a platform-wide dashboard with 17 management sections, from user moderation to transactions, invoices and disputes.

Key features

  • Discovery — search, cuisine and location filters, list and interactive map views, favourites and hidden restaurants
  • Ordering — persistent per-restaurant cart, allergen and diet filters on dishes, discount codes, promotions, loyalty points
  • Live orders — SignalR pushes status changes to customers and to the restaurant dashboard as they happen
  • Payments — Stripe payment intents driven by webhooks, with refunds and a full dispute workflow
  • Billing — invoice generation with its own numbering service, invoice reductions, and monthly commission statements per restaurant
  • Administration — users (roles, suspensions, bans), restaurants, dishes, orders, order rules and blocked slots, ratings, notifications, moderation, transactions
  • Onboarding — restaurant owner registration that creates the first restaurant in the same flow

Architecture

A .NET 10 solution split into seven projects:

ProjectRole
ServerASP.NET Core 10 Web API — layered controllers → services → repositories, ServiceResult<T> instead of exceptions, SignalR hub
ClientBlazor WebAssembly SPA with a SCSS design system and CSS isolation
SharedLibraryDTOs, enums and API routes shared by client and server — one source of truth for every route
InfrastructureEF Core data access, Stripe gateway, invoicing, messaging
WorkerRabbitMQ consumers: emails (RazorLight + MailKit), invoice PDFs (QuestPDF), commission statements
SchedulerQuartz jobs — monthly commission statements, order abandonment and restaurant timeout sweeps
TestsNUnit 4 + NSubstitute, unit and integration suites

Jobs are persisted before they are published, so a lost message is recovered: the worker retries through dedicated retry queues (1 min, 5 min, 15 min) before dead-lettering, and a sweep service re-publishes jobs left pending or stuck processing.

Engineering highlights

  • Production deployment — Docker Compose across three isolated networks (public, frontend, backend), hardened containers, and a Cloudflare Tunnel so no port is ever exposed
  • CI/CD — three-tier GitHub Actions pipeline: parallel fast gates (format, Semgrep SAST, NuGet vulnerability audit, Compose lint, license compliance) → Release build with warnings as errors → tests with a coverage threshold and production images scanned by Trivy with SBOMs
  • Security — ASP.NET Core Identity with JWT bearer tokens, and claims refreshed on every authenticated request so a suspended or banned account loses access immediately
  • Conventions — Conventional Commits with Azure Boards references, enforced by Git hooks that also run format checks and builds before every commit
  • Documentation — specification, ER model, 33-page data dictionary, UML diagrams, mockups, brand guide and seven feature design specs (all available below)

Tech stack

  • Frontend: Blazor WebAssembly, SCSS, Leaflet.js, Blazicons
  • Backend: ASP.NET Core 10, Entity Framework Core, Identity, SignalR, Swagger/OpenAPI
  • Async & jobs: RabbitMQ, Quartz.NET, MailKit, RazorLight, QuestPDF
  • Data & storage: PostgreSQL, Redis, Garage (S3-compatible)
  • Payments: Stripe
  • DevOps: Docker, Nginx, Cloudflare Tunnel, GitHub Actions, Semgrep, Trivy, Dependabot

Files & Gallery